目录
I-F提供了其他一些比较简单但是有用的类,可以帮助我们实现一些常用的应用,如果你需要更多类库的话,我们建议你使用PEAR和Zend Framework,I-F确信不会和他们冲突。
在一个项目中,如果只使用I-F往往是不够的,当然我们也不提倡这样,有一些现成的成熟的类库可以提供我们使用,比如Smarty,PEAR或Zend Framework,它们会帮助我们实现更丰富的功能。
在I-F中导入第三方类库相当简单,且有两个方法分别处理不同的情况:
可以修改config/application.conf.php中的class-path,加入类库的地址。默认地,只要类放在/lib、/app/models、/app/controllers、/app/views、/app/filters、/app/filters任一目录下,无需做任何事情,都可以在控制器访问的到,比如有一个类MyClass放在 /lib目录下,
/lib/MyClass.php
那么在控制器中可以直接使用:
class HelloWorldController extends IApplication {
public function appIndex() {
$my = new MyClass();
}
}
所以我们可以添加更多的地址到class-path中。
对于class-path中的子目录中的类/lib/a/b/c/MyClass.php,可以使用import函数导入:
import("a.b.c.MyClass");
$my = new MyClass();
也可以使用
import("a.b.c.*");
一次性地将a/b/c目录下的所有类导进来。
而且无论a/b/c放在哪一个class-path,都可以这样使用。
include-path是对php.ini的include_path的一个运行时的扩充,可以将一个目录添加到include-path中,然后系统查找文件时会自动在这些目录下查找,我们可以将Smarty等类库放到/lib下,然后将/lib加入到include_path中。修改application.conf.php中的include-path为:
/**
* 程序文件的查找路径
*/
"include-path" => array(
"lib",//可以是Z-F、Smarty、PEAR等框架的所在目录
),
然后把smarty类库放进去,目录结构为:
/lib
/smarty-2.6.19
Smarty.class.php
现在就可以在程序中使用:
//包含文件
require_once "smarty-2.6.19/Smarty.class.php";
//设置smarty选项
IModelAndSmarty::setSmartyOptions(array(
"compile_check" => true,
"debugging" => false,
"cache_dir" => IFRAMEWORK_APP_ROOT . "/view/cache/",
"left_delimiter" => "{",
"right_delimiter" => "}"
));