php基类是什么意思,php – CodeIgniter基类,为什么呢?

许多框架决定使用这种方法:强制用户扩展基本控制器类(如果要创建新控制器)或扩展基础模型类(如果要创建新模型).

我们来看看CodeIgniter控制器基类的代码:

/**

* Constructor

*/

public function __construct()

{

self::$instance =& $this;

// Assign all the class objects that were instantiated by the

// bootstrap file (CodeIgniter.php) to local class variables

// so that CI can run as one big super object.

foreach (is_loaded() as $var => $class)

{

$this->$var =& load_class($class);

}

$this->load =& load_class('Loader', 'core');

$this->load->initialize();

log_message('debug', "Controller Class Initialized");

}

它有什么作用?好吧,据我所知,它只允许我们使用$this-> load-> …例如.

让我们看一下模型基类的__get()魔术方法:

/**

* __get

*

* Allows models to access CI's loaded classes using the same

* syntax as controllers.

*

* @param string

* @access private

*/

function __get($key)

{

$CI =& get_instance();

return $CI->$key;

}

它完全一样.这种做事方式带来了什么?

PRO

>您可以通过$this-> ….访问有用的CI类.

缺点

>您必须强制用户扩展基类

>您必须强制用户在类构造中调用parent :: __ construct()

> get_instace()是保留的

> $this->实例重新定义会导致致命错误

>您基本上在Model基类和Controller基类中重复了相同的代码

现在让我们来看看另一种方法:

创建一个静态类,例如App,它执行基本控制器执行的所有操作:

例如,$this-> load-> …将是App :: load-> ….

现在再次考虑利弊:

PRO

>您可以通过App :: ….访问有用的CI类

>您不必强制用户扩展基类

>您不必强制用户在类构造中调用parent :: __ construct()

>没有方法保留名称或属性名称

>您可以在模型和控制器中使用App

缺点

>你没有更多$this->性感语法???

这里提出了一个真正的问题:与CI相比,第二种方法是更好还是更差?为什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值