От автора: недавно пришлось справку брать о составе семьи. Думаете, это так просто? Я и не подозревал, что «бюрократические» коридоры в нашей стране столь длинные и извитые. Они мне чем-то напоминают ООП: здесь тоже, чтобы вызвать метод класса, сначала нужно создать его объект, потом наследовать нужную функцию от родительского…. Хорошо, что есть статические методы PHP, которые позволяют легко обойти всю бюрократию, заложенную в объекто-ориентированном программировании!
Что за методы такие?
Использование статических функций во многом упрощает работу с ООП. Их можно вызывать, не создавая экземпляр класса. То есть, они принадлежат классу, а не объекту. Из-за этого применение внутри них псевдопеременной $this невозможно.
Также стоит учитывать, что изменение статических методов повлечет за собой их изменение во всех остальных экземплярах. Чтобы создать «статику», перед именем функции нужно указать ключевое слово static, а затем идентификатор доступа. Пример:
1 2 3 4 5 6 7 8 9 |
<?php class SampleClass{ public static function f1() { echo"Я статический метод"; } } ?> |
Обращение к статике
Не зная всех тонкостей синтаксиса, вызвать статический метод PHP будет сложно. Почему? Ну, хотя бы из-за использования для доступа к нему специального оператора. Глядите сами:
1 2 3 4 5 6 7 8 9 10 11 |
<?php class SampleClass{ public static function f1() { echo"Я статический метод"; } } SampleClass::f1(); ?> |
Но за свою независимость статическим членам класса приходится расплачиваться. Внутри родного класса ни одно свойство, ни один метод не может просто так получить доступ к static. Только через специальное ключевое слово self:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php class SampleClass{ public static function f1() { return $b="Я статический метод "; } function f2() { return $a=self::f1()."класса SampleClass"; } } $obj=new SampleClass(); echo $obj->f2(); ?> |
Вот такой маленький получился экскурс в PHP статические методы класса. Используйте это средство с умом, так как любой неправильный вызов «статики» может привести к появлению трудно перехватываемых ошибок.
Комментарии (1)