Что означает слово "статический" при объявлении функции


Это код из учебника.

class user {
    // return if username is valid format
    public static function validateUsername($username){
        return preg_match('/^[A-Z0-9]{2,20}$/i', $username);
    }
}

Интересно, какова функция статики?

Жаль, что книга, которую я читал, не объяснила этого : (

3 2
php

3 ответа:

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

PHP: Static Keyword-Manual

В вашем примере вы можете вызвать свою функцию следующим образом:

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- статика ключевое слово