zoukankan      html  css  js  c++  java
  • A框架 第二部 实例化接收到的get类,调用父类抽象方法,自动执行方法call_user_func_array()

    01父类抽象类 abstract.php

    <?php
    abstract class controller_abstract{
    protected $app;

    function __construct(& $app){
      $this->app = $app;
    }

    public function exec(){
    call_user_func_array(array($this->app->class,$this->app->action),array($this->app->args));
    }

    }

    02 子类admin.php继承抽象父类前.需要先导入抽象父类abstract.php

    <?php
    include 'G:/Projects/test/A/apps/system/abstract.php';
    class controller_admin extends controller_abstract{
    public function __construct($app){
    parent::__construct($app);//需要调用父类的构造方法.把获得的参数$_GET全部传递过去
    }
    public function login(){echo 'please login';

    }

    }

    03子类index.php继承抽象父类前.需要先导入抽象父类abstract.php

    <?php
    require_once('G:/Projects/test/A/apps/system/abstract.php');
    class controller_index extends controller_abstract{

    public function index(){

    echo 'the index';
    }
    }

    A框架主程序文件--设置$class属性.接收(拼接好的)类名, 通过new 类名()实例化--$this(包含了$_GET接收到的所有参数)

    <?php
    define('DS','/');
    define('A_PATH',str_replace('\','/',dirname(__FILE__)).DS);

    class a {
    public $app,$controller,$action,$class,$client;
    public function __construct($clien){
    $this->client = $clien;
    }


    public function execute(){


    $this->app = $_GET['app'];
    $this->controller = $_GET['controller'];
    $this->action = $_GET['action'];
    $this->args = $_GET;

    $this->app_dir = A_PATH .'apps'.DS.$this->app.DS;
    $file = $this->app_dir.'controller'.DS.$this->controller.'.php';
    require($file);

    $this->class = 'controller_'.$this->controller;

    $obj = new $this->class($this);

    $response = $obj->exec();



    }


    }

    ====频繁导入抽象父类

  • 相关阅读:
    Spring MVC(一)
    Spring-IOC总结
    IT
    Spring基础
    Maven
    Ajax笔记
    数据库和SQL语言
    JDBC
    拦截器
    文件上传
  • 原文地址:https://www.cnblogs.com/bj-tony/p/5306926.html
Copyright © 2011-2022 走看看