Расширение scalar_objects позволяющее добавлять различные методы к уже существующим в PHP 5.4 и зародилось оно на Github 24 января 2013 года. Описание PHP расширения scalar_objects гласит о том, что оно позволяет зарегистрировать некий произвольный PHP класс, который будет обрабатывать вызовы стандартных PHP методов определенных примитивных типов (null, bool, int, float, string, array and resource).
Для начала нужно будет скомпилировать и подключить PHP расширение scalar_objects - требуется PHP версии не ниже 5.4. Дальнейшее использование scalar_objects будет выглядеть примерно следующим образом:
# Создадём классы-хендлеры с нужными нам публичными методами: # для обработки строк class StringTypeHandler { public function length() { return strlen($this); } } # для обработки массивов class ArrayHandler { public function sort($flags = SORT_REGULAR) { sort($this, $flags); return $this; } public function count() { return count($this); } } # Привязываем методы для типов 'string' и 'array' к соответствующим классам: register_primitive_type_handler('string', 'StringHandler'); register_primitive_type_handler('array', 'ArrayHandler'); # Используем $str = "str"; var_dump($str->length()); // int(3)
После выполнения приведённых выше манипуляций у строковых (скалярных) переменных появился метод length, а у переменных типа array соответственно переопределён метод sort и count. Т.е. PHP расширение scalar_objects позволяет не только добавлять свои специфические методы для обработки типов (null, bool, int, float, string, array and resource) но также и переопределять поведение уже существующих.
Разумеется, что таких методов можно добавлять сколько душе угодно, все они публичные, а в качестве строки которая обрабатывается (числа, массива) выступает $this. "foobar"->trim(); вызовет Parse error - это значит, что методы пока можно вызывать только у переменных.
Автором PHP расширения scalar_objects является Никита Попов (контрибьютор PHP), возможно когда-нибудь оно будет добавлено в ядро PHP интерпретатора. Повторимся, что это расширение находится в альфа-версии, т.е. в эксперементальном варианте и использовать его можно только в качестве ознакомления на тестовых серверах но, не в коем случае не на "Product" серверах!
Ссылка на PHP расширение scalar_objects >>>

