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

Допустим, у меня есть класс:

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

Позвони test::sayHi();

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

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

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

-1

Решение

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

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

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

1

Другие решения

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

private function test(){
//do something
}

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

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

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

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

0

По вопросам рекламы [email protected]