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();
}
}
====频繁导入抽象父类