PHP ReflectionClass 反射类

PHP类反射常在MVC中URL解析到指定Module,Controller方法使用

Reflection的类结构整理


ReflectionClass

<?php
class Product{
    public function Lists($category,$form){
        var_dump($category);
        var_dump($form);
    }
}

$url = "/Product/Lists/Category/5/form/6";
$url = ltrim($url, '/');
$pathinfo = explode('/',$url, 3);
$module  = $pathinfo[0];
$action  = $pathinfo[1];
$var  = array();
preg_replace('@(w+)/([^/]+|s+)@e', '$var['\1']=strip_tags('\2');', $pathinfo[2]);
if(class_exists($module)) {
    $reflectClass = new ReflectionClass($module);
    $obj = $reflectClass->newInstance(); //实例化类
    if ($reflectClass->hasMethod($action)) {
        $reflectClass->getMethod($action)->invokeArgs($obj, $var); //执行$obj方法
    }
}