Xin Xing では PHP のリフレクション メカニズムを使用してプラグインを実装します

WBOY
リリース: 2016-06-13 12:02:55
オリジナル
852 人が閲覧しました

Xin Xing に従って、PHP のリフレクション メカニズムを使用してプラグインを実装してください

私のブログの以前の記事では、PHP のリフレクション メカニズムについて説明しました。読者がリフレクション メカニズムについてよくわからない場合は、検索するか、私のブログを読んでください。ブログ投稿はすべて良い選択です。まず、PHP を使用してプラグイン メカニズムを実装する方法を説明します。いわゆるプラグイン メカニズムは、インターフェイスを定義することを意味します。つまり、インターフェイスを定義し、その後、サードパーティのプラグインがこのインターフェイスを実装し、プラグインを取得した後、そのプラグインを呼び出します。これらのプラグインのクラス名を知る必要はありません。情報を待って、この関数を実装するためにリフレクション メカニズムを使用します。

単純な例を示しているだけなので、私が書いたコードは長くはなく、非常に単純です。したがって、上記の手順を理解したら、ソースコードを直接見ることができます。読者が何か不明な点がある場合は、お知らせください。丁寧にお答えします。

<?php/***我们定义好一个接口,叫做Ixin*/interface Ixin{	function msg();}/***某热心开发人员给我们写了一个插件类*/class Xin implements Ixin{	function msg(){		echo "辛星你好";	}}/***我们先搜索该插件类,并且判断它是否实现了msg方法*/function find(){	//定义描述插件的数组	$plugin = array();	foreach (get_declared_classes() as  $class) {		//实例化反射类的类		$reclass = new ReflectionClass($class);		//判断它是否实现了接口Ixin		if($reclass->implementsInterface('Ixin')){			$plugin[] = $reclass;		}	}	return $plugin;}/***我们去调用该插件的msg方法*/function myexec(){	$arr = find();	foreach (find() as $plugin) {		//判断该插件是否有方法msg		if($plugin->hasMethod('msg')){			//得到这个方法类的一个实例			$remethod = $plugin->getMethod('msg');			//如果它是静态方法,则直接调用即可			if($remethod->isStatic()){				$remethod->invoke(null);			}else{				//先声明插件类的一个实例,然后调用它				$pluins = $plugin->newInstance();				$remethod->invoke($pluins);			}		}	}}/***我们只需要调用这一个函数就可以了*它自动搜索所有的插件,并且执行插件的msg函数*/myexec();
ログイン後にコピー

インターフェース Ixin は私たちが定義したインターフェースであり、クラス Xin は定義されたすべてのクラスを自動的に検索するために find を使用します。次に、クラス内の Who が Ixin から継承しているかどうかを判断し、msg メソッドを実装します。このリストを取得したら、myexec メソッドを使用してそれらを呼び出すことができます。

あなたは明確に考えていますか?明確な場合は 1. と入力してください。 。 。 O(∩_∩)O~

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート