PHPでデコレーターパターンする

PHPでデコレーターパターンを簡単に書くためのスクリプトを書きました。

akrfjmt/decorated - Packagist

本来のデコレーターパターンはメソッドごとに挟みたい処理を書くのですが、PHPには__callというマジックメソッドがあり、メソッドを1つ定義すると全てのメソッド呼び出しに対して処理を挟むことができます。

みたいなときに使えると思います。

テストから抜粋
<?php
$yankeeDecorator = new TailDecorator('!?');
$cat = new Cat();

/** @var Cat|Decorated $decorated */
$decorated = new Decorated($cat, $yankeeDecorator);

/** @var Cat|Decorated $doubleDecorated */
$doubleDecorated = new Decorated($cat, $yankeeDecorator, $yankeeDecorator);

// '111222'
$cat->Concat('111', '222');

// 'abcdef!?'
$decorated->Concat('abc', 'def');

// '114514!?!?'
$doubleDecorated->Concat('114', '514');
デコレーターというよりAOPの出来損ないでは?

はい