php_php 팁에서 리플렉션을 사용하여 플러그인 메커니즘을 구현하는 방법

WBOY
풀어 주다: 2016-05-16 20:21:07
원래의
1081명이 탐색했습니다.

이 기사의 예에서는 PHP가 리플렉션을 사용하여 플러그인 메커니즘을 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 구현 방법은 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
/**
* @name PHP Reflection API - 리플렉션 기술을 사용하여 구현된 플러그인 시스템 아키텍처
​*/  
인터페이스 Iplugin{  
    공개 정적 함수 getName();  
}  
함수 findPlugins(){  
    $플러그인 = 배열();  
    foreach(get_declared_classes()를 $class로){  
        $reflectionClass = 새로운 ReflectionClass($class);  
        if ($reflectionClass->implementsInterface('Iplugin')) {  
            $plugins[] = $reflectionClass;  
        }  
    }  
    $플러그인을 반환합니다.  
}  
함수 계산 메뉴(){  
    $메뉴 = 배열();  
    foreach(findPlugins()를 $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);  
        }  
    }  
    $메뉴를 반환합니다.  
}  
함수 ComputeArticles(){  
    $articles = 배열();  
    foreach(findPlugins()를 $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);  
        }  
    }  
    $articles 반환;  
}  
MycoolPugin 클래스는 Iplugin을 구현합니다. {  
    공개 정적 함수 getName(){  
        'MycoolPlugin'을 반환합니다.  
    }  
    공개 정적 함수 getMenuItems(){  
        return array(array('description'=>'MycoolPlugin','link'=>'/MyCoolPlugin'));  
    }  
    공개 정적 함수 getArticles(){  
        return array(array('path'=>'/MycoolPlugin','title'=>'정말 멋진 기사입니다.','text'=> 'xxxxxxxxx' ));  
    }  
}
$메뉴 = 계산메뉴()
$articles=computeArticles()
print_r($메뉴)
print_r($articles);

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿