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

В PHP есть несколько «магических методов», таких как __construct, __destruct, __call, __callStatic, __get, __set, __isset, __unset, __sleep, __wakeup, __serialize, __toString, __invoke, __setState, __clone и __debuginfo. Мы уже рассмотрели магические методы __call, __construct и __destruct.



__вызов()

Магический метод __invoke вызывается, когда скрипт вызывает объект как функцию.

<?php

class InvokeTest
{
    public function __invoke( $name )
    {
        echo "Hey " . $name;
    }
}

$invoke = new InvokeTest;
$invoke("Dino");

Интересный. Мы создаем экземпляр объекта InvokeTest, а затем вызываем его как функцию. Мы получаем ответ, и это: Hey Dino.

__нанизывать()

Если вы когда-либо хотели echo сам объект, вам просто нужно реализовать __toString метод.

<?php

class ToStringTest
{
    private string $name = "Dino Cajic";

    public function __toString() {
        return $this->name;
    }
}

$test = new ToStringTest;
echo $test;

В ответ мы получаем Dino Cajic.

__set(), __получить()

Мы могли бы также рассмотреть методы __set и __get, пока мы заканчиваем. Подобно магическому методу __call, __set и __get вызываются, когда свойство недоступно либо из-за применения к свойству модификатора private/protected, либо из-за того, что свойство не существует.

Магический метод __set принимает два аргумента, $name и $value. $name — это свойство, к которому вы пытаетесь получить доступ, а $value — это значение, которое вы пытаетесь присвоить.

Для магического метода __get мы просто передадим свойство, к которому вы пытаетесь получить доступ.

<?php

class GetAndSetTest
{
    private array $data;

    public function __set($name, $value) {
        $this->data[$name] = $value;
    }

    public function __get($name) {
        return $this->data[$name];
    }
}

$test = new GetAndSetTest;

$test->name = "Dino Cajic";
echo $test->name;

$test->age = 55;
echo $test->age;

Несмотря на то, что у нас нет этих свойств, у нас есть __set магический метод. Он устанавливает наш массив $data сначала с $data[‘name’] = ‘Dino Cajic’, а затем с $data[‘age’] = 55. Затем мы можем вызвать эти свойства с помощью метода __get. Таким образом, ответ, который мы получаем, когда мы вызываем наши свойства: Dino Cajic и 55.



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

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

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