リフレクション API のプラグイン メソッドは、実行時のプログラムの機能の決定に基づいています。つまり、オプションのインターフェイス メソッドの作成が可能であり、最初に使用されるときにインターフェイス メソッドのこの部分のみが存在することが検出されます。プラグイン内でそれらはインターフェースがある場合にのみ使用されます
$pluginInstance=$plugin->newInstance();
$items=$reflectionMethod->invoke($pluginInstance); =array_merge($articles,$items);
}
}
return $articles;
function computeSidebars(){
$sidebars=array();
foreach (findPlugins() as $plugin){
if($プラグイン-> hasMethod('getSidebars')){
$reflectionMethod=$plugin->getMethod('getSidebars');
if($reflectionMethod->isStatic()){
$items=$reflectionMethod-> invoke(null) ;
}else{
$pluginInstance=$plugin->newInstance();
$items=$reflectionMethod->invoke($pluginInstance)
}
$sidebars=array_merge($sidebars,$items) );
}
}
return $sidebars;
}
オプション機能を実装するリフレクティブプラグインを作成します
コードは次のとおりです:
class MyCoolPlugin は IPlugin を実装します{
public static function getName(){return 'MyCoolPlugin';}
public static function getMenuItems(){
//メニュー項目の数値インデックス配列
return array(array('description'=> 'MyCoolPlugin','link'=>'/MyCoolPlugin'));
}
public static function getArticles(){
//記事の数値インデックス配列
return array(array('path'=>'/MyCoolPlugin) ','title'=>'これは本当に素晴らしい記事です',
'text'=>'この記事は...'));
}
public static function getSideBars(){
//記事のサイドバー インデックス配列
return array(array('sideBars'=>'/MyCoolPlugin'));
}
}
最後に、このプラグインを使用できます:
コードをコピーします コードは次のとおりです:
$menu=computeArticles();
$articles=computeArticles(); ) ;
http://www.bkjia.com/PHPjc/321893.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/321893.html
技術記事リフレクション API のプラグイン メソッドは、実行時のプログラムの機能の決定に基づいています。つまり、オプションのインターフェイス メソッドの作成が可能であり、最初に使用されるときにインターフェイス メソッドのこの部分を検出します...