Так построено большинство книг. Давайте использовать некоторые ключевые слова, не объясняя их вам ранее. Я тоже попался в эту ловушку. Мы рассмотрели ключевое слово self в последних двух статьях, не вдаваясь в подробности того, что оно означает.



Для статических членов класса мы не используем ключевое слово $this, мы используем self. Это и оператор разрешения области видимости позволяют нам получить доступ к статическим свойствам и методам. Ключевое слово self не требует знака доллара перед ним, в отличие от ключевого слова $this. $ подталкивается к статическому свойству, self::$property, тогда как при нестатическом доступе с ключевым словом $this доллар знак удален из имени свойства: $this-›property.

Чтобы получить доступ к нестатическому свойству или методу, вы добавляете оператор объекта к ключевому слову $this. Чтобы получить доступ к статическим свойствам или методам внутри класса, вы используете ключевое слово self, за которым следует разрешение области действия или оператор с двойным двоеточием.

Статические свойства и методы могут быть возвращены как статическими, так и нестатическими методами.

Подведение итогов. Взгляните на следующий класс, который мы рассмотрели в предыдущих статьях: Немецкая овчарка.

Мы посмотрели на self в нашем классе GermanShepherd в его нынешнем виде.

Здесь мы создали статическое свойство с именем $num_of_dogs_created, а под ним статический метод с именем update_num_of_dogs_created(). Оба они являются членами класса, и для доступа к ним вам не нужно создавать экземпляр объекта GermanShepherd.

Чтобы протестировать наш пример, мы создадим новый файл и добавим тот же код, что и в предыдущей статье.

Наш класс GermanShepherd включен и создан. Чтобы вызвать статические члены, нам не нужно их создавать, но как только мы это сделаем, у нас есть вызов в нашем конструкторе, который обновляет количество созданных собак.

Чтобы получить доступ к update_num_of_dogs_created() из нашего конструктора, мы должны использовать ключевое слово self, так как это статический метод. Мы не можем использовать $this. Мы должны использовать self, за которым следует оператор разрешения области действия и, наконец, имя статического метода.

Статический метод увеличивает статическое свойство $num_of_dogs_created, снова добавляя self к имени свойства: self::$num_of_dogs_created++;

Давайте создадим еще один нестатический метод: get_num_of_dogs_created_plus_two(). Это просто что-то случайное; не читайте слишком много в этом :). Все, что этот метод сделает, это, как вы уже догадались, вернет количество созданных собак и прибавит к нему 2.

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

Вывод должен выглядеть следующим образом:

Количество созданных экземпляров: 1
Обновить еще раз: 2
Количество созданных собак + 2: 4

Прогулка по коду:

  • Мы вызываем статическое свойство $num_of_dogs_created, которое возвращает 1.
  • Затем мы вызываем статический метод update_num_of_dogs_created(), который увеличивает значение статического свойства до 2.
  • Статическое свойство $num_of_dogs_created вызывается снова, чтобы отобразить 2.
  • Наконец, мы вызываем метод экземпляра, get_num_of_dogs_created_plus_two(), который возвращает значение статического свойства $num_of_dogs_created, увеличенное на 2.

Это все, что касается ключевого слова self .



Дино Кайич в настоящее время является руководителем отдела информационных технологий в компаниях LSBio (LifeSpan BioSciences, Inc.), Absolute Antibody, Kerafast, Everest BioTech, Nordic MUbio и Exalpha. Он также является генеральным директором MyAutoSystem. Он имеет более чем десятилетний опыт разработки программного обеспечения. У него есть B.S. в области компьютерных наук и несовершеннолетнего в области биологии. Его опыт включает в себя создание приложений для электронной коммерции на уровне предприятия, разработку программного обеспечения на основе исследований и содействие распространению знаний посредством письма.

Вы можете связаться с ним в LinkedIn, подписаться на него в Instagram, подписаться на его блог или подписаться на его публикацию на Medium.

Прочитайте все истории Дино Каджика (и тысяч других авторов на Medium). Ваш членский взнос напрямую поддерживает Дино Кайича и других писателей, которых вы читаете. Вы также получите полный доступ ко всем историям на Medium.