Cet article présente principalement la méthode PHP utilisant la réflexion pour implémenter le mécanisme de plug-in, impliquant le mécanisme de réflexion PHP et les compétences en matière d'implémentation de plug-in. Les amis dans le besoin peuvent s'y référer
Cet article décrit l'exemple. de PHP utilisant la réflexion pour implémenter la méthode du plug-in. La méthode de mise en œuvre spécifique est la suivante
Le code est le suivant :
<?php /** * @name PHP反射API--利用反射技术实现的插件系统架构 */ interface Iplugin{ public static function getName(); } function findPlugins(){ $plugins = array(); foreach (get_declared_classes() as $class){ $reflectionClass = new ReflectionClass($class); if ($reflectionClass->implementsInterface('Iplugin')) { $plugins[] = $reflectionClass; } } return $plugins; } function computeMenu(){ $menu = array(); foreach (findPlugins() as $plugin){ if ($plugin->hasMethod('getMenuItems')) { $reflectionMethod = $plugin->getMethod('getMenuItems'); if ($reflectionMethod->isStatic()) { $items = $reflectionMethod->invoke(null); } else { $pluginInstance = $plugin->newInstance(); $items = $reflectionMethod->invoke($pluginInstance); } $menu = array_merge($menu,$items); } } return $menu; } function computeArticles(){ $articles = array(); foreach (findPlugins() as $plugin){ if ($plugin->hasMethod('getArticles')) { $reflectionMethod = $plugin->getMethod('getArticles'); if ($reflectionMethod->isStatic()) { $items = $reflectionMethod->invoke(null); } else { $pluginInstance = $plugin->newInstance(); $items = $reflectionMethod->invoke($pluginInstance); } $articles = array_merge($articles,$items); } } return $articles; } class MycoolPugin implements 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'=>'This is a really cool article','text'=> 'xxxxxxxxx' )); } } $menu = computeMenu(); $articles = computeArticles(); print_r($menu); print_r($articles);
Résumé : Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il le fera être utile à l’apprentissage de chacun.
Recommandations associées :
Implémentation PHP du réseau de serveurs proxy chinois de collecte
Jugement et définition dynamique des variables php
PHP implémente des fonctions simples GET, POST, Cookie, Session et autres
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!