用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4756|回复: 0
收起左侧

kohana文档翻译(Libraries)

[复制链接]
发表于 2008-7-16 14:54:51 | 显示全部楼层 |阅读模式
下列库在Kohana中总是自动加载
  • Loader
  • URI
  • Input
其他库也可以自动加载,比如要加载Profiler库,你只需要在你控制器的构造函数中加入
PHP复制代码
$this->profiler = new Profiler;
复制代码

另外,你需要手动加载类,只需要这样
PHP复制代码
$this->load->library('some_library');
复制代码

注意,自Kohana 2.1.2起,像上面这样手动加载库的的方法不建议使用
更多关于loading
创建自己的库(libraries)
创建自己的库,需遵守下列约定:
  • 库文件应该放在application/libraries目录下(或者你创建一个模块(module),放到modules/libraries下)
  • 库文件名必须和类库名相同(但是不能有_Core后缀)
  • 库的类名首字母必须大写
  • 创建一个新的类库,你可以在类库名后加上”_Core”后缀,使你能用扩展Kohana内置类库的方式来扩展你的类库
例如你想创建一个“book”的类库,你可以像下面这样File: application/libraries/Book.php
PHP复制代码
<?php defined('SYSPATH') or die('No direct script access.');
 class Book_Core {
 
    // add constructor/methods/properties here
 
}
 
?>
复制代码


扩展类库
Kohana允许你扩展它的内置类库,加上你自己的功能或者改变它们的工作方式,但是你绝不对移除system/libraries下的文件,你可以创建一个新的类库来继承内置类库
只要你的类库名加上了”_Core”后缀,你也可以扩展(extend)你的类库.
扩展类库除需要遵循创建类库的约定外,还要遵循以下:
  • 文件名必须以”MY_”开头,前缀的设置
  • 类名必须和你扩展的类名相同,并且没有_Core后缀
比如你要扩展Kohana的controller 类库,你应该这样:File: application/libraries/MY_Controller.php
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();
    }
 }
?>
复制代码



不仅可以而且我们期望你扩展Kohana的核心类库
这里是一些在实践中你有可能要扩展Kohana控制器的情况:
  • 你希望全站采用缓存
  • 你需要执行一个验证方法
  • 你希望对控制器提供布局或者模板方法,这些都可以在你要继承的控制器中扩展,然后可以在每个控制器中都是可用的
不建议在configuration选项中预装载libraries和models,通过扩展基控制器和在构造函数中加载libraries和models 更完美.
替换Kohana的内置类库
可以完全替换掉Kohana的内置类库(虽然这种情况很少见),除开一个例外,其他应该遵循的约定和你添加一个类库一样
  • 在类名后加上”_Core”不只是可选的,你必须这样做
例如你要替换掉 Profiler类库,你应该这样创建:
File: application/libraries/Profiler.php
PHP复制代码
<?php
defined('SYSPATH') or die('No direct script access.');
class Profiler_Core {
    // define your own profiler here
 }
?>
复制代码


第三方类库
如果你需要利用第三方类库(比如Simplepie, Zend Framework, Pear ),你可以把它们放到application/vendors目录
加载它们只需要
PHP复制代码
Kohana::find_file('vendors','some_class');
复制代码


注意有些第三方类库能完全适应Kohana,有时候需要重命名文件和类名,不过可以采用一个变通的方法
PHP复制代码
$this->load->library('some_lib');
复制代码

Zend Framework
不经过配置的话,Zend Framework的文件会尽可能的加载它所依存的文件,这样会出错,如果zend文件夹在applications/vendor/zend,下面的代码会有用:
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/');
复制代码


包含一个Zend Framework的组件,你可以这样做
PHP复制代码
// example
require_once 'Zend/Service/Flickr.php';
 
// or another example
require_once 'Zend/Acl.php';
$acl = new Zend_Acl();
复制代码

[ 本帖最后由 星期八 于 2008-7-16 15:02 编辑 ]

本版积分规则