我正在研究Kohana框架并试图通过代码来更好地理解框架是如何工作的。
所以 - 从index.php我们加载:
require SYSPATH.'base'.EXT;
require SYSPATH.'classes/kohana/core'.EXT;
require APPPATH.'bootstrap'.EXT;
在core.php文件中,我们执行以下操作:
public static $environment = Kohana::DEVELOPMENT;
通过致电Kohana :: DEVELOPMENT,我们可以参考什么? 根据我的理解 - 通过使用::我们应该从kohana类获得静态常量。 - 对?但是在代码的那一刻,我找不到加载的Kohana类。 所以 - 有人可以解释这里发生了什么:)? 感谢
解决:
没关系。我没有足够地遵循代码。 Kohana类扩展了Kohana_Core类。嗯。太糟糕了,无法从StackOverflow中删除愚蠢的问题。答案 0 :(得分:2)
Kohana(可能是任何其他框架)使用“自动加载”机制。这允许您使用类而不包括手动定义的文件。自动装带器将自动包含/要求Kohana
类所在的文件。
因此,当您键入Kohana::DEVELOPMENT
或new Kohana ();
时,自动加载程序将加载包含Kohana
类的文件。你应该知道这不会神奇地起作用。您必须为您的框架编写自己的自动加载程序代码。
您可以阅读有关自动加载here的更多信息。
答案 1 :(得分:0)
有关详细信息,请查看以下链接:spl_autoload register。 Kohana使用自己的实现,可以在bootstrap.php
文件中设置。您可以在Core.php
文件中找到此功能。
/**
* Enable the Kohana auto-loader.
*
* @link http://kohanaframework.org/guide/using.autoloading
* @link http://www.php.net/manual/function.spl-autoload-register
*/
spl_autoload_register(array('Kohana', 'auto_load'));