master_x
Pitavale XXI wieku
PHPForza - АОП библиотека
PHPForza - новая АОП библиотека
Предлагаю вашему вниманию библиотеку предоставляющую АОП (аспектно-ориентированное программирование) возможности в PHP.
Библиотека не является простым ткачом (weaver) с процессом: написание аспекта, написание скрипта, выполнение специальной программы слияния аспекта и скрипта; при помощи PHPForza все аспекты применяются и отменяются во время выполнения скрипта.
Плюсы библиотеки:
- время разработки приложения уменьшается
- динамические аспекты (применение и отмена в любом месте программы)
- аспекты можно создавать в любом месте программы, до объявления класса или после
- PHPForza не требует других библиотек (runkit к примеру)
- для объявления точек среза (pointcuts) можно использовать маску (*, wildcard) а также специальные regexp- совместимые символы (альтернатива, указание длины слова, класс символов и т.д.)
Минусы (не критичные):
- для запуска PHPForza желателен PHP 5.2. Библиотека будет работать и на младших версиях, однако если обрабатываемый PHPForza скрипт будет содержать parse errors, apache прекратит свою работу с segfault. Это внутренний баг PHP до версии 5.2, связанный с streams который был исправлен Tony, если я не ошибаюсь
- любой скрипт к которому надо применить аспект, должен подключаться черз include или require со специальной схемой forza://. В принципе, это не является проблемой в хорошо спроектированных приложениях. PHPForza также сканирует поключаемый скрипт на наличие include и require и заменяет все вхождения на include/require со схемой forza:// автоматически.
Пока еще ничего неизвестно о скоростных характеристиках библиотеки. Я проводил поверхностные и нечистоплотные =) тесты и могу сказать что все зависит от размера обрабатываемого скрипта и от количества применяемых аспектов. В общем выходит довольно шустро, так как велосипедов в приложении нет, все основанно на стандартных функциях PHP. На ближайших выходных я проведу "настоящие" тесты и выясню скорость работы.
А пока жду комментариев, конструктивной критики, пожеланий, указаний на баги.
Ссылка на архив: phpforza.net/download.php
PS: хотел тему создать на agiledev.ru, если кто здесь тусуется с того форума, подскажите а надо ли?
PHPForza - новая АОП библиотека
Предлагаю вашему вниманию библиотеку предоставляющую АОП (аспектно-ориентированное программирование) возможности в PHP.
Библиотека не является простым ткачом (weaver) с процессом: написание аспекта, написание скрипта, выполнение специальной программы слияния аспекта и скрипта; при помощи PHPForza все аспекты применяются и отменяются во время выполнения скрипта.
Плюсы библиотеки:
- время разработки приложения уменьшается
- динамические аспекты (применение и отмена в любом месте программы)
- аспекты можно создавать в любом месте программы, до объявления класса или после
- PHPForza не требует других библиотек (runkit к примеру)
- для объявления точек среза (pointcuts) можно использовать маску (*, wildcard) а также специальные regexp- совместимые символы (альтернатива, указание длины слова, класс символов и т.д.)
Минусы (не критичные):
- для запуска PHPForza желателен PHP 5.2. Библиотека будет работать и на младших версиях, однако если обрабатываемый PHPForza скрипт будет содержать parse errors, apache прекратит свою работу с segfault. Это внутренний баг PHP до версии 5.2, связанный с streams который был исправлен Tony, если я не ошибаюсь
- любой скрипт к которому надо применить аспект, должен подключаться черз include или require со специальной схемой forza://. В принципе, это не является проблемой в хорошо спроектированных приложениях. PHPForza также сканирует поключаемый скрипт на наличие include и require и заменяет все вхождения на include/require со схемой forza:// автоматически.
Пока еще ничего неизвестно о скоростных характеристиках библиотеки. Я проводил поверхностные и нечистоплотные =) тесты и могу сказать что все зависит от размера обрабатываемого скрипта и от количества применяемых аспектов. В общем выходит довольно шустро, так как велосипедов в приложении нет, все основанно на стандартных функциях PHP. На ближайших выходных я проведу "настоящие" тесты и выясню скорость работы.
А пока жду комментариев, конструктивной критики, пожеланий, указаний на баги.
Ссылка на архив: phpforza.net/download.php
PS: хотел тему создать на agiledev.ru, если кто здесь тусуется с того форума, подскажите а надо ли?