2010-10-27 6 views
2

это код из учебника.Что означает «статический» при объявлении функции

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

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

это слишком плохо, книга я читал не объяснять :(

+1

педантичный Примечание: Это метод, а не функция (я знаю, что она по-прежнему использует 'function' ключевое слово, но это метод, поскольку он связан с классом) .. – ircmaxell

ответ

10

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

PHP: Static Keyword - Manual

в вашем примере, вы могли бы назвать вашу функцию как:

user::validateUsername("someUserName"); 

Вместо того, чтобы создать экземпляр и затем вызвать функцию:

$user = new user(); 
$user->validateUsername("someUserName"); 
+3

Я бы проголосовал за этот ответ, но это означает гораздо больше. –

+0

@NickLarsen - Переформулированные вещи немного, чтобы сделать это более понятным. –

+0

Большое спасибо за ссылку, это объясняется так много :) – GusDeCooL

1

Вы это видели: http://php.net/manual/en/language.oop5.static.php

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

источник: http://bytes.com/topic/php/answers/495206-static-method-vs-non-static-method

0

Статические функции - это функции, принадлежащие классу, а не экземпляр объекта. Их можно назвать без инстансов класса, обращаясь к ним напрямую -

user::validateUsername(...); 

Или, используя ключевое слово self внутри класса

self::validateUsername(...); 

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

Подробнее в PHP руководстве - the static keyword

Смежные вопросы