Содержание
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 () выше.