2017-01-06 5 views
-2

Скажем, у меня есть класс:Можете ли вы определить статический метод вне класса?

class test { 
    public static function sayHi() { 
     echo 'hi'; 
    } 
} 

Вызов его test::sayHi();

Могу ли я определить sayHi() вне класса или, возможно, избавиться от класса в целом?

public static function sayHi() { 
     echo 'hi'; 
} 

Мне нужна эта функция только для инкапсуляции кода для скрипта. Возможно, ответ не является статическим методом, но простой функцией def?

+0

Аналогичные? http://stackoverflow.com/q/15608255 –

+0

@PraveenKumar Аналогичный, но, конечно, не обман. –

+0

Вот почему я не закрыл. ': D' –

ответ

1

Статический метод без класса не имеет никакого смысла. Статические ключевые слова сигнализируют о том, что этот метод идентичен для всех экземпляров класса. Это позволяет вам называть его .. ну .. статически на самом классе, а не на одном из его экземпляров.

Если содержание метода является самодостаточным, то есть ему не нужны никакие другие статические переменные или методы класса, вы можете просто опустить класс и поместить его в глобальный метод. Использование глобальных методов считается плохой практикой.

Так что мой совет - просто сохранить класс, даже если он имеет только один метод внутри. Таким образом, вы можете автозагрузить файл, а не требовать его самостоятельно.

+0

Что такое синтаксис глобального метода? –

+0

function sayHi() {} ---- По умолчанию любая функция общедоступна ... даже в классах. Вам не нужны «статические» или «глобальные» функции, возможно, в переменных, но не в функциях. – Asfo

0

функции в ООП являются открытыми по умолчанию, вы можете изменить их личное, как:

Или, как вы сказали, к статическому электричеству, публичным или частным порядком, как:

private static function test(){ 
    //do something 
} 

Но если вы не используете OOP, функции по умолчанию являются глобальными и общедоступными, вы не можете изменить их доступ к частным. Это не так, как они должны работать, потому что, если вы измените свой тип на частный, вы НИКОГДА не сможете получить доступ к этой функции. Кроме того, статический не работает, потому что это другое свойство OOP ...

Затем вы можете просто создать эту функцию и получить доступ к ней везде, где хотите (очевидно, где доступно: P, потому что вам нужно включить файл, где хранится)