A框架 第二部 实例化接收到的get类,调用父类抽象方法,自动执行方法call_user_func_array()...

本文介绍了一个简单的PHP MVC框架设计案例,包括使用抽象类作为控制器基类,并通过具体子类实现不同的业务逻辑。演示了如何加载抽象基类、构造控制器实例及调用执行方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();



}


}

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

 

转载于:https://www.cnblogs.com/bj-tony/p/5306926.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值