码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2018-10-04 23:53:52      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:调度   fun   name   isp   asm   code   function   模拟   ref   

<?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中的反射模拟框架中控制器的调度

标签:调度   fun   name   isp   asm   code   function   模拟   ref   

原文地址:https://www.cnblogs.com/homehym/p/9743720.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!