星期八 2008-7-16 14:54
kohana文档翻译(Libraries)
下列库在Kohana中总是自动加载
[list][*]Loader[*]URI[*]Input[/list]其他库也可以自动加载,比如要加载Profiler库,你只需要在你控制器的构造函数中加入
[code=PHP]$this->profiler = new Profiler;[/code]
另外,你需要手动加载类,只需要这样
[code=PHP]$this->load->library('some_library');[/code]
[indent]注意,自Kohana 2.1.2起,像上面这样手动加载库的的方法不建议使用
[/indent]更多关于[url=http://www.8ther.com/2008/07/13/kohana-loading-resources/][color=#63dbf5]loading[/color][/url]
[b]创建自己的库(libraries)[/b]
创建自己的库,需遵守下列约定:
[list][*]库文件应该放在application/libraries目录下(或者你创建一个模块(module),放到modules/libraries下)[*]库文件名必须和类库名相同(但是不能有_Core后缀)[*]库的类名首字母必须大写[*]创建一个新的类库,你可以在类库名后加上”_Core”后缀,使你能用扩展Kohana内置类库的方式来扩展你的类库[/list]例如你想创建一个“book”的类库,你可以像下面这样File: application/libraries/Book.php
[code=PHP]<?php defined('SYSPATH') or die('No direct script access.');
class Book_Core {
// add constructor/methods/properties here
}
?>[/code]
[b]扩展类库[/b]
Kohana允许你扩展它的内置类库,加上你自己的功能或者改变它们的工作方式,但是你绝不对移除system/libraries下的文件,你可以创建一个新的类库来继承内置类库
只要你的类库名加上了”_Core”后缀,你也可以扩展(extend)你的类库.
扩展类库除需要遵循创建类库的约定外,还要遵循以下:
[list][*]文件名必须以”MY_”开头,[url=http://docs.kohanaphp.com/general/configuration][color=#63dbf5]前缀的设置[/color][/url][*]类名必须和你扩展的类名相同,并且没有_Core后缀[/list]比如你要扩展Kohana的controller 类库,你应该这样:File: application/libraries/MY_Controller.php
[code=PHP]<?php defined('SYSPATH') or die('No direct script access.');
class Controller extends Controller_Core {
public function __construct(){
// don't for get to call the parent constructor!
parent::__construct();
}
}
?>[/code]
不仅可以而且我们期望你扩展Kohana的核心类库
这里是一些在实践中你有可能要扩展Kohana控制器的情况:
[list][*]你希望全站采用缓存[*]你需要执行一个验证方法[*]你希望对控制器提供布局或者模板方法,这些都可以在你要继承的控制器中扩展,然后可以在每个控制器中都是可用的[/list]不建议在configuration选项中预装载libraries和models,通过扩展基控制器和在构造函数中加载libraries和models 更完美.
[b]替换Kohana的内置类库[/b]
可以完全替换掉Kohana的内置类库(虽然这种情况很少见),除开一个例外,其他应该遵循的约定和你添加一个类库一样
[list][*]在类名后加上”_Core”不只是可选的,你必须这样做[/list]例如你要替换掉 Profiler类库,你应该这样创建:
File: application/libraries/Profiler.php
[code=PHP]<?php
defined('SYSPATH') or die('No direct script access.');
class Profiler_Core {
// define your own profiler here
}
?>[/code]
[b]第三方类库[/b]
如果你需要利用第三方类库(比如Simplepie, Zend Framework, Pear ),你可以把它们放到application/vendors目录
加载它们只需要
[code=PHP]Kohana::find_file('vendors','some_class');[/code]
注意有些第三方类库能完全适应Kohana,有时候需要重命名文件和类名,不过可以采用一个变通的方法
[code=PHP]$this->load->library('some_lib');[/code]
[b]Zend Framework[/b]
不经过配置的话,Zend Framework的文件会尽可能的加载它所依存的文件,这样会出错,如果zend文件夹在applications/vendor/zend,下面的代码会有用:
[code=PHP]// make sure you put this somewhere before loading a Zend Framework component
ini_set('include_path',ini_get('include_path').PATH_SEPARATOR.APPPATH.'vendor/zend/library/');[/code]
包含一个Zend Framework的组件,你可以这样做
[code=PHP]// example
require_once 'Zend/Service/Flickr.php';
// or another example
require_once 'Zend/Acl.php';
$acl = new Zend_Acl();[/code]
[[i] 本帖最后由 星期八 于 2008-7-16 15:02 编辑 [/i]]