Magic

Класс Magic представляет собой волшебную оболочку PHP и реализует интерфейс ArrayAccess .

Пространство имен: \

Расположение файла:lib/magic.php

Инициализация

Класс Magic - это абстрактный класс , а это означает, что вам нужно расширить его другим классом, который затем сможет воспользоваться преимуществами Magic.

Он реализует интерфейс ArrayAccess и наделяет их некоторыми методами. Таким образом, вы можете использовать базовый объект так же, как и любой стандартный массив. Давайте посмотрим на этот пример:

class User extends Magic {
 
    protected $data;
 
    function exists($key) {
        return array_key_exists($key,$this->data);
    }
 
    function set($key, $val) {
        $this->data[$key] = $val;
    }
 
    function &get($key) {
        return $this->data[$key];
    }
 
    function clear($key) {
        unset($this->data[$key]);
    }
}

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

$user = new User();
$user->name = 'John';
$user['age'] = 28;
$user->set('mail','john@email.com');
 
echo $user['name']; // John
echo $user->get('age'); // 28
echo $user->mail; // john@email.com

Абстрактные методы

Поскольку класс Magic является абстрактным, ваш новый класс-потомок, использующий Magic, должен реализовать все эти функции:

exists

Верните TRUE, если ключ не пустой

bool exists ( string $key )
 

Эта функция возвращает TRUE, если ключ не пуст.

set

Привязать значение к ключу

mixed set ( string $key, mixed $val )
 

Эта функция позволяет привязать значение к ключу

get

Получить содержимое ключа

mixed get ( string $key )
 

Эта функция позволяет получить содержимое ключа.

clear

Отвязать ключ

NULL clear ( string $key )
 

Эта функция позволяет отвязать ключ

Родительские методы

Для внутренней реализации необходимы следующие методы. Они вам не нужны в вашем классе. Придерживайтесь абстрактных методов.

visible

Верните TRUE, если свойство имеет область видимости public

private bool visible ( string $key )
 

Эта функция возвращает значение TRUE, если свойство имеет область видимости public. Это важно,для решения, если вызываем мы magic setter/getter или просто обходим свойство c областью видимости public.

offsetexists

Удобный способ проверки значения свойства

mixed offsetexists ( string $key )
 

Удобный метод получения значения свойства.

__isset

Псевдоним для offsetexists()

mixed __isset ( string $key )
 

Является псевдонимом для функции offsetexists() выше

offsetset

Удобный способ присвоения свойству какого-лтбо значения

mixed offsetset ( string $key, scalar $val )
 

Удобный метод установки значения свойству.

__set

Псевдоним для offsetset()

mixed __set ( string $key, scalar $val )
 

Является псевдонимом для функции offsetset () выше

offsetget

Удобный метод получения значения свойства

mixed offsetget ( string $key )
 

Удобный способ получить значение свойства.

__get

Псевдоним для offsetget ()

mixed __get ( string $key )
 

Является псевдонимом для функции offsetget () выше

offsetunset

Удобный способ проверки значения свойства

NULL offsetunset ( string $key )
 

Удобный метод проверки значения свойства.

__unset

Псевдоним для offsetunset ()

NULL __unset ( string $key )

Является псевдонимом для функции offsetunset () выше.

Печать/экспорт