Допустим, у меня есть класс:
class test {
public static function sayHi() {
echo 'hi';
}
}
Позвони test::sayHi();
Могу ли я определить sayHi()
вне класса или, возможно, избавиться от класса вообще?
public static function sayHi() {
echo 'hi';
}
Мне нужна только эта функция для инкапсуляции кода для скрипта.
Может быть, ответ не статический метод, а простая функция def?
Статический метод без класса не имеет никакого смысла вообще. Статические ключевые слова сигнализируют, что этот метод идентичен для всех экземпляров класса. Это позволяет вам вызывать его … ну … статически на самом классе, а не на одном из его экземпляров.
Если содержимое метода является автономным, то есть ему не нужны никакие другие статические переменные или методы класса, вы можете просто опустить класс и поместить код в глобальный метод. Использование глобальных методов считается плохой практикой.
Поэтому мой совет — просто держать класс, даже если в нем есть только один метод. Таким образом, вы все равно можете автоматически загрузить файл вместо того, чтобы требовать его самостоятельно.
Функции в ООП по умолчанию являются общедоступными, вы можете изменить их на частные, например:
private function test(){
//do something
}
Или, как вы сказали, для статического, публичного или частного типа:
private static function test(){
//do something
}
Но если вы не используете ООП, функции по умолчанию являются глобальными и общедоступными, вы не можете изменить их доступ на частные. Это не так, как они должны работать, потому что если вы измените их тип на приватный, вы НИКОГДА не сможете получить доступ к этой функции. Кроме того, static не работает, потому что это еще одно свойство OOP …
Затем вы можете просто создать эту функцию и обращаться к ней откуда угодно (очевидно, где это доступно: P, потому что вам нужно включить файл, где хранится)