gpt4 book ai didi

module - 如何覆盖 Kohana 3 中的模块类?

转载 作者:行者123 更新时间:2023-12-02 09:25:31 26 4
gpt4 key购买 nike

在 Kohana 3 中,如何覆盖/扩展模块类?

例如我想向特定于我的应用程序的 Auth 模块添加功能。在本例中,我想扩展位于 Auth 模块的 classes 文件夹中的抽象 Auth 类。

我的 Auth 类应该使用什么命名约定以及我的类文件应放置在文件系统中的哪个位置?

最佳答案

要解决此问题,了解 Kohana 3 框架的层次结构性质非常重要。当涉及到覆盖或扩展模块时,您需要执行以下操作。

让我们扩展 Auth 模块。当您查看 Auth 模块文件系统结构时,您会注意到在 classes 目录中有一个名为 auth.php 的文件。当您打开此文件时,您会看到以下内容:

<?php defined('SYSPATH') OR die('No direct access allowed.');

abstract class Auth extends Kohana_Auth { }

这里定义了一个名为 Auth 的抽象类,它扩展了 Kohana_Auth 类。当您在应用程序中使用对 Auth 类的任何引用时,您引用的是这个抽象类。 Auth 的实际实现实际上保存在 Kohana_Auth 类中,该类位于模块目录结构的 Kohana 文件夹中。

要扩展Auth模块,即添加您自己的功能,您只需将auth.php文件放置在您的classes文件夹中应用程序目录。在您的 auth.php 文件中,您可以通过扩展 Kohana_Auth 类来扩展您的 Auth 模块版本。就像这样:

<?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()
{
}

}

由于框架的分层性质,定义为模块一部分的抽象类 Auth 永远不会被加载,因为框架首先加载您的 Auth 类,因为它优先。您扩展的类 Kohana_Auth 提供了您无法扩展和/或覆盖的所有身份验证原始功能。

有关行为结帐的更多信息 this文档的一部分。

关于module - 如何覆盖 Kohana 3 中的模块类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2643464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com