为了解决这个问题,了解Kohana3框架的层次性是很重要的。当涉及到覆盖或扩展模块时,您需要执行以下操作。
让我们扩展auth模块。当您查看auth模块文件系统结构时,会注意到
classes
目录有一个名为
auth.php
. 打开此文件时,您会看到以下内容:
<?php defined('SYSPATH') OR die('No direct access allowed.');
abstract class Auth extends Kohana_Auth { }
这里是一个名为
Auth
定义了扩展
Kohana_Auth
班级。当您使用
奥思
在应用程序中,您引用的是这个抽象类。实际实施
奥思
实际上被保存在
科哈纳亚特
位于
Kohana
文件夹模块目录结构的哪个部分。
扩展
奥思
模块,即添加您自己的功能,您只需将
PHP
文件中
班
应用程序目录的文件夹。在你
PHP
文件扩展您的版本
奥思
通过扩展
科哈纳亚特
班级。像这样:
<?php defined('SYSPATH') OR die('No direct access allowed.');
class Auth extends Kohana_Auth {
public function get_user()
{
$result = parent::get_user()
// implement your functionality here.
return $result;
}
public function my_added_functionality()
{
}
}
由于框架的层次性,抽象类
奥思
定义为模块的一部分将永远不会加载,因为框架将加载
奥思
类优先,因为它优先。你所扩展的类,
科哈纳亚特
,提供所有无法扩展和/或重写的身份验证原始功能。
有关行为检查的详细信息
this
文件的一部分。