Хуки и расширение функции.

pilot911

Новичок
посмотрел Observer - имеется недостаток, заключающийся в том, что объекты уже должны быть созданы на момент широковещательной передачи

без конфига не обойтись и так же будут вызываться два метода:


PHP:
class q extends observer {

    function d() {
        $this->save_pre($array_data); 
        ....
        $this->save_post($array_data, $id);  
    } 

}
 

whirlwind

TDD infected, paranoid
А почему нельзя заюзать декоратор? Ведь насколько я понимаю, сам себя он save не делает.
 

whirlwind

TDD infected, paranoid
а пусть HraKK ответит сначала, а то я тему поперек читал может чего не вкурил
 

HraKK

Мудак
Команда форума
whirlwind
есть два или более эктеншена, которые ничего друг о дружке не знают
Он хочет автоматом типа залил 2 екстеншена они подхватились и стали выполнять свои назначения.

pilot911
Не нужен там конфиг. И читаться все равно будет приятнее.
Но все равно то что ты хочешь разве что можно сделать в AOP. Да и то ...
 

pilot911

Новичок
понятно, ну ладно, оставим текущий механизм до лучших времен
 

HraKK

Мудак
Команда форума
А когда они настанут убери его.
А то ты идешь по пути битрикса семимильными шагами.
 

pilot911

Новичок
Автор оригинала: HraKK
А когда они настанут убери его.
А то ты идешь по пути битрикса семимильными шагами.
Посмотрел AOP - по сути, я его и реализовал

Как видно из примера, до кода бизнес логики метода и после него установлены
«оповещатели» этих событий.
PHP:
function Sample() {
     Advice::_before();
     print 'Class initilization<br />';
     Advice::_after();
     return $this;
}
Когда процессор PHP минует такой «оповещатель» он проверяет, нет ли активных
аспектов. В случае наличия такового, PHP проверяет указана ли текущая функция в
диапазоне Pointcut. Если и это условие верно, вызывается назначенная нами функция для
данного события (например для Advice::_before()).
 

HraKK

Мудак
Команда форума
В PHP нету AOP ;) А ручная эмуляция это конечно круто)
http://ru.wikipedia.org/wiki/Аспектно-ориентированное_программирование
Читай что ты сделал:
Сквозная функциональность приводит к рассредоточенному и запутанному коду. Запутанным называется такой код, в котором одновременно реализована различная функциональность.
Хоть есть екстеншены но что-то слабо верится.
 

pilot911

Новичок
есть два варианта - пишется сайт, меняется ядро и начинается новая ветка без возможности обновления

ну и второй - это хуки :)
 

HraKK

Мудак
Команда форума
угу и второй ведет в битрикс.

Поэтому я выбираю первый и не мудахаю голову ни себе не людям.
 

fixxxer

К.О.
Партнер клуба
pilot911
с такой любовью к aop тебе стоит посмотреть в сторону ruby =)
 
Сверху