Codeigniter中集成smarty和adodb的方法


Posted in PHP onMarch 04, 2016

本文实例讲述了Codeigniter中集成smarty和adodb的方法。分享给大家供大家参考,具体如下:

在CodeIgniter中要写自己的库,就需要写两个文件,一个是在application/init下面的init_myclass.php文件(如果没有init目录,自己创建)。另外一个就是在application/libraries目录下创建myclass.php文件。

这里myclass是你的类名。一些规则大家看手册就好了,我这里直接就说步骤了。

1)在application/libraries下分别创建mysmarty.php和adodb.php
mysmarty.php文件的内容如下:

<?php
// load Smarty library
require('Smarty/Smarty.class.php');
// The setup.php file is a good place to load
// required application library files, and you
// can do that right here. An example:
// require('guestbook/guestbook.lib.php');
class MySmarty extends Smarty {
 function MySmarty()
 {
    // Class Constructor.
    // These automatically get set with each new instance.
    $this->Smarty();
    $basedir=dirname(__FILE__);
    $this->template_dir = "$basedir/templates/";
    $this->compile_dir = "$basedir/templates_c/";
    $this->config_dir  = "$basedir/configs/";
    $this->cache_dir  = "$basedir/cache/";
    //$this->compile_check = true;
    //this is handy for development and debugging;never be used in a production environment.
    //$smarty->force_compile=true;
    $this->debugging = false;
    $this->cache_lifetime=30;
    $this->caching = 0; // lifetime is per cache
    //$this->assign('app_name', 'Guest Book');
 }
}
?>

文件路径根据具体情况修改,文件的的路径是相对你的网站的主目录开始的,而不是当前文件的当前目录,比如上面的require('Smarty/Smarty.class.php');不是相对application/libraries目录,而是相对$_SERVER['DOCUMENT_ROOT']目录。

adodb.php文件的内容如下:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Adodb
{
  function Adodb()
  {
    //$dsn="dbdriver://username:password@server/database"
    $dsn = 'mysql://user:password@localhost/xxxx';
    require_once("adodb/adodb.inc".EXT);
    $this->adodb =& ADONewConnection($dsn);
    $this->adodb->Execute("set NAMES 'utf8'"); 
  }
}
?>

2)在application/init目录下分别创建init_adodb.php和init_mysmarty.php。

init_adodb.php文件内容如下:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
$obj =& get_instance();
$obj->adodb = new Adodb($obj);
$obj->ci_is_loaded[] = 'adodb';

init_mysmarty.php文件内容如下:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
if ( ! class_exists('MySmarty'))
{
  require_once(APPPATH.'libraries/mysmarty'.EXT);
}
$obj =& get_instance();
$obj->mysmarty = new MySmarty();
$obj->ci_is_loaded[] = 'mysmarty';
?>

3)使用他们
在application/controllers目录下创建一个你需要的文件,你可以这样来使用adodb和smarty。

<?php
class Test extends Controller {
 function Test()
 {
  parent::Controller(); 
  $this->load->library('mysmarty');
  $this->load->library('adodb');
 }
 function index()
 {
 $this->load->library('adodb');
 $row = $this->adodb->adodb->getrow('SELECT * FROM admin');
    $this->mysmarty->assign("row",$row);
    $this->mysmarty->display("test.tpl");
 }
}
?>

我也不知道这里为什么需要两次adodb,按照官方的做法应该只需要一次,但是他的方法在我这里有错误。可能是我对CodeIgniter还不太了解吧,等深入一些,再看看有没有解决办法。不过至少目前这个可以工作了。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
生成静态页面的PHP类
Nov 25 PHP
PHP HTML代码串 截取实现代码
Jun 29 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
Linux编译升级php的详细方法
Nov 04 PHP
PHP程序员基本要求和必备技能
May 09 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
php获取url参数方法总结
Nov 13 PHP
自己写的php中文截取函数mb_strlen和mb_substr
Feb 09 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
PHP常用技巧汇总
Mar 04 #PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
Mar 03 #PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 #PHP
CodeIgniter针对数据库的连接、配置及使用方法
Mar 03 #PHP
CodeIgniter表单验证方法实例详解
Mar 03 #PHP
PHP6新特性分析
Mar 03 #PHP
php轻松实现文件上传功能
Mar 03 #PHP
You might like
用session做客户验证时的注意事项
2006/10/09 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
Python中字典映射类型的学习教程
2015/08/20 Python
Python实现文件复制删除
2016/04/19 Python
pandas通过索引进行排序的示例
2018/11/16 Python
Python csv模块使用方法代码实例
2019/08/29 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
出纳员岗位责任制
2014/02/11 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
单位接收函范文
2015/01/30 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书