PHP中的反射模拟框架中控制器的调度

Posted 清水泥沙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中的反射模拟框架中控制器的调度相关的知识,希望对你有一定的参考价值。

<?php

class IndexAction {

    public function index() {
        echo ‘index‘;
    }

    public function indexBefore() {
        echo ‘indexBefore‘;
    }

    public function indexAfert() {
        echo ‘indexAfert‘;
    }

    public function sayHello($name) {
        echo "{$name}helloword!";
    }

}

if (class_exists(‘IndexAction‘)) {
    $ReflectObj = new ReflectionClass(‘IndexAction‘);

    if (!$ReflectObj->hasMethod(‘index‘)) {
        throw new Exception(‘不存在index‘);
    }
    $ReflectIndex = $ReflectObj->getMethod(‘index‘);
    if (!$ReflectIndex->isPublic()) {
        throw new Exception(‘index不是共有方法‘);
    }

    if ($ReflectObj->hasMethod(‘indexBefore‘)) {
        $ReflectIndexBefore = $ReflectObj->getMethod(‘indexBefore‘);
        $ReflectIndexBefore->invoke($ReflectObj->newInstance());
    }

    if ($ReflectObj->hasMethod(‘sayHello‘)) {
        $ReflectSayHello = $ReflectObj->getMethod(‘sayHello‘);
        $ReflectSayHello->invoke($ReflectObj->newInstance(), ‘小明‘);
    }

    if ($ReflectObj->hasMethod(‘indexAfert‘)) {
        $ReflectindexAfert = $ReflectObj->getMethod(‘indexAfert‘);
        $ReflectindexAfert->invoke($ReflectObj->newInstance());
    }
}

利用反射获取类中的信息,来对类进行制定规则。

以上是关于PHP中的反射模拟框架中控制器的调度的主要内容,如果未能解决你的问题,请参考以下文章