先吐槽一下,CI框架对第三方类库的扩展其实并不是很好用,我觉得最主要的原因就是CI没有引入PHP的命名空间,引入第三方类库的时候很容易就发生命名冲突的事。当然这也是CI的一大特点——轻。在CI3发布的时候说是进行了重构,但是我自己对比了一下,结构完全没有变,文档基本没有变,有些类工作流程和代码也基本是一样的,也没有使用namespace,最终就是修改了一大堆bug和一些细节处的功能增加,还是有点失望。其实我并没有通读过CI的代码也不够深入框架,上面的看法也许非常粗浅,希望有大神提出深入的看法。

正文

现在还是回到集成中来。下载CI3,下载Smarty3

CI中的第三方类库是放到/application/third_party文件夹下面。这里CI官方文档一笔带过没有相关的规范,那我们就直接解压我下载的smarty-3.1.24.zip到上面这个文件夹。这样smarty的目录就在/application/third_party/smarty-3.1.24Smarty.class.php文件存在于/application/third_party/smarty-3.1.24/libs

接下来使用自建类使用Smarty:在/application/libraries目录下创建Use_smarty类。由于不支持命名空间,不能命名为Smarty,否则跟Smarty类命名冲突。

还需要一个步骤,自动加载这个类。修改/application/config/autoload.php文件:

这里为了调用方便,把use_smarty重命名为了smarty,这样就可以在控制器中使用$this->smarty而不是$this->use_smarty。当然也可以不自动加载类,使用 $this->load->library('use_smarty'); 加载类,前面就要使用后者来调用此类了。

接下来就是使用测试这个类。

新建模板文件/application/views/common/test.php

新建控制器/application/controllers/Viewwork.php

访问这个页面,成功。

—EOF—