Оглавление

Статические свойства и методы

К методам или свойствам, объявленным как статические (static), можно получить доступ без обязательного предварительного создания экземпляра класса; вы просто предоставляете имя класса, дополняете его оператором разрешения области видимости и указываете имя свойства или метода.

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

 

Чтобы продемонстрировать это, добавим в класс MyClass статическое свойство $count и статический метод  plusOne(). Организуем также цикл  do...while для вывода увеличивающегося значения счетчика $count,  пока оно не превышает 10.

 


 
<?php 
 
class MyClass 
{ 
    public $prop1 = "Это свойство класса!"; 
 
    public static $count = 0; 
    public function __construct() 
    { 
        echo 'Класс "', __CLASS__, '" инициирован!<br />'; 
    } 
 
    public function __destruct() 
    { 
        echo 'Класс "', __CLASS__, '" уничтожен.<br />'; 
    } 
 
    public function __toString() 
    { 
        echo "Используем метод toString:  "; 
        return $this->getProperty(); 
    } 
 
    public function setProperty($newval) 
    { 
        $this->prop1 = $newval; 
    } 
 
    private function getProperty() 
    { 
        return $this->prop1 . "<br />"; 
    } 
 
    public static function plusOne()                              
    {                                                             
        return "Значение счетчика " . ++self::$count . ".<br />"; 
    }                                                             
} 
 
class MyOtherClass extends MyClass 
{ 
    public function __construct() 
    { 
        parent::__construct(); 
                echo "Новый конструктор в классе " . __CLASS__ . ".<br />"; 
    } 
 
    public function newMethod() 
    { 
        echo "Новый меиод в классе " . __CLASS__ . ".<br />"; 
    } 
 
    public function callProtected() 
    { 
        return $this->getProperty(); 
    } 
} 
do                                                                 
{                                                                  
    // Вызвать plusOne без создания экземпляра MyClass             
    echo MyClass::plusOne();                                       
} while ( MyClass::$count < 10 );                                  
 
?> 

 

Примечание. При обращении к статическим свойствам знак доллара ($) ставится после оператора разрешения области видимости.


Загрузив этот сценарий в браузер, вы получите следующий результат.

Значение счетчика 1.
Значение счетчика 2.
Значение счетчика 3.
Значение счетчика 4.
Значение счетчика 5.
Значение счетчика 6.
Значение счетчика 7.
Значение счетчика 8.
Значение счетчика 9.
Значение счетчика 10.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити