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中的反射模拟框架中控制器的调度的主要内容,如果未能解决你的问题,请参考以下文章

asp.net MVC 框架中控制器里使用Newtonsoft.Json对前端传过来的字符串进行解析

PHP中的控制器有啥用

OneThink插件中控制器访问路径控制

限制 NinjaFramework 中控制器方法中的参数数量?

Asp.Net Core 中控制器方法中的绑定 Guid

从 MVC 中控制器中的不同方法向视图发送消息