1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dongnan-microAOP

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

microAOP — компактная и мощная AOP-библиотека

microAOP представляет собой компактную и мощную AOP-библиотеку, написанную на PHP. После удаления пустых строк и комментариев объём эффективного кода составляет более 300 строк, но при этом реализовано множество полезных функций, которые позволяют легко реализовать AOP в PHP. Если вы хотите использовать AOP в существующем проекте, то с microAOP это будет очень просто. Вам нужно только добавить все необходимые аспекты и внести минимальные изменения в исходный код.

Установка

MicroAOP можно установить через Composer. Процесс установки очень прост:

  1. Загрузите microAOP через Composer:
$ composer require dongnan/microaop

Composer установит microAOP в ваш проект. Путь установки: vendor/dongnan/microaop.

  1. Создайте класс модели:
<?php
namespace yournamespace;

class Model {

    public function save() {
        echo __METHOD__ . ' has been executed' . PHP_EOL;
    }

}
  1. Создайте аспектный класс:
<?php
namespace yournamespace;

class Aspect {

    public function saveBefore($params) {
        echo '------------------------------------------' . PHP_EOL;
        echo __METHOD__ . ' has been executed' . PHP_EOL;
    }

    public function saveAfter($params) {
        echo '------------------------------------------' . PHP_EOL;
        echo __METHOD__ . ' has been executed' . PHP_EOL;
    }

}
  1. Свяжите аспектный класс с экземпляром модели:
<?php

use microAOP\Proxy;
use yournamespace\Model;
use yournamespace\Aspect;

$model = new Model();

//Just bind it
Proxy::__bind__($model, new Aspect());

$model->save();

После выполнения вы получите следующий вывод:

------------------------------------------
yournamespace\Aspect::saveBefore has been executed
yournamespace\Model::save has been executed
------------------------------------------
yournamespace\Aspect::saveAfter has been executed

Особенности

  • Связывание аспектного класса очень простое, требуется всего одна строка кода.
  • Один объект может связывать несколько аспектных классов одновременно.
  • Поддерживает связывание функций, поддерживает все типы callable.
  • Один объект может одновременно связывать несколько функций (callable).
  • Правила запуска для связанных функций — это имя метода, также можно использовать регулярные выражения для соответствия имени метода.
  • В порядке связывания выполняются методы и функции (callable), связанные с объектом, но функции всегда выполняются после аспектных методов.
  • Точки срабатывания включают перед выполнением метода (before), после выполнения (after), при возникновении исключения (exception) и всегда выполняется (always).
  • Вызываемый метод или функция (callable) имеет один параметр, который является массивом, содержащим имя класса связанного объекта (class), имя вызываемого метода (method), все параметры вызываемого метода (args), возвращаемое значение вызываемого метода (return) (при нормальном выполнении) и информацию об исключении вызываемого метода (exception) (если возникает исключение).
  • Связанные аспектные классы и функции (callable) могут быть удалены в любое время.
  • Поддержка хуков (v0.3.0 добавлена).

Примеры

Пожалуйста, обратитесь к содержимому каталога examples в проекте.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dongnan-microAOP.git
git@api.gitlife.ru:oschina-mirror/dongnan-microAOP.git
oschina-mirror
dongnan-microAOP
dongnan-microAOP
master