Что означает слово "статический" при объявлении функции
Это код из учебника.
class user {
// return if username is valid format
public static function validateUsername($username){
return preg_match('/^[A-Z0-9]{2,20}$/i', $username);
}
}
Интересно, какова функция статики?
Жаль, что книга, которую я читал, не объяснила этого : (
3 ответа:
Конечным результатом является то, что вам не нужно создавать экземпляр класса для выполнения функции (это еще не все, но я позволю руководству охватить эти части):
В вашем примере вы можете вызвать свою функцию следующим образом:
user::validateUsername("someUserName");
Вместо того, чтобы создавать экземпляр и затем вызывать функцию:
$user = new user(); $user->validateUsername("someUserName");
Вы видели это: http://php.net/manual/en/language.oop5.static.php
Статические методы и переменные полезно, когда вы хотите поделиться информация между объектами a класс, или хотите что-то представлять это связано с самим классом, не какой-то конкретный предмет.
Источник: http://bytes.com/topic/php/answers/495206-static-method-vs-non-static-method
Статические функции - это функции, принадлежащие классу, а не экземпляру объекта. Они могут быть вызваны без создания экземпляра класса, обращаясь к нему напрямую -
user::validateUsername(...);
Или с помощью ключевого слова
self
из классаself::validateUsername(...);
Статические функции в некотором смысле являются глобальными функциями. Вы должны использовать их экономно, так как зависимости от статических функций труднее извлечь и сделать тестирование и повторное использование более трудными.
Подробнее читайте в руководстве PHP- статика ключевое слово