Pythonを知らずにTracを触ってたので気付かなかったけど、Tracのソースに書いてあるInterfaceとかimplementsっていう仕組みはTrac独自なんだね。 だから自由にInterfaceの挙動を操作できる。 Interfaceが組み込みでも、リフレクションを使えば似たものが作れる。 任意のクラスでInterfaceを実装すればプラグインとして扱われるという仕組みを考える。 リフレクションを使ってインターフェースを取得するPluginクラス。 <?php // Plugin.php class Plugin { /** @var array array('InterfaceName' => array(plugins)) */ private $plugins = array(); /** * iniファイルを解析してプラグインを登録する。 * * Pluginで利用するコ