Новое расширение PHP позволяет добавлять произвольные методы к скалярамИсточник: habrahabr rsvasilyev
На Github появилось новое экспериментальное расширение PHP "scalar_objects", с помощью которого можно добавлять любые методы к числам, строкам, массивам.
Симпатично, не правда ли? Инструкции по установке можно найти по ссылке выше, требуется PHP 5.4. Имейте ввиду, что расширение находится в очень ранней альфа-версии, первый коммит датирован 24 января. Радует, что автор расширения - контрибьютор PHP Никита Попов: есть вероятность, что подобное API когда-нибудь добавят в ядро интерпретатора. Дальше я просто покажу как можно использовать эти новые возможности в разработке. Допустим, у нас есть вот такая строка:
Задача:
Обычно это делается так:
С помощью данного расширения задача решается в одну строчку:
Все понятно и красиво, только как такое провернуть? 1. Устанавливаем расширение scalar_objects; 2. Создадим классы-хендлеры для строк и массивов с нужными нам публичными методами:
3. Привяжем методы для строк и массивов к соответствующим классам:
После этого у строковых переменных появились методы replace, split, remove и так далее, у массивов - метод count(). Естественно, таких полезных методов можно добавить сколько угодно. Обратите внимание, что все они - публичные, а в качестве обрабатываемой строки(массива, числа) выступает $this. Подобным образом обработчики можно присвоить любому скалярному типу. Также следует отметить, что конструкции вида:
вызывают Parse error, то есть методы можно вызывать пока только у переменных. Также в репозитории есть пример реализации удобного API "запросов к строкам":
Очень наглядно и гораздо проще для запоминания, в отличии от strspn, strcspn, strpbrk. Хочется верить, что разработчики PHP включат подобный функционал в следующие версии. Чуточку такого синтаксического сахара сделает разработку намного приятней, а разработчиков - счастливее. Ссылка на проект: https://github.com/nikic/scalar_objects/ |