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 相关文章推荐
PHP4与PHP3中一个不兼容问题的解决方法
Oct 09 PHP
PHP实现下载功能的代码
Sep 29 PHP
深入php var_dump()函数的详解
Jun 05 PHP
与文件上传有关的php配置参数总结
Jun 14 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
Jan 15 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP chr()函数讲解
Feb 11 PHP
PHP实现PDO操作mysql存储过程示例
Feb 13 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
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
python检测远程udp端口是否打开的方法
2015/03/14 Python
Python pass详细介绍及实例代码
2016/11/24 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
摄影助理岗位职责
2014/02/07 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
遗愿清单观后感
2015/06/09 职场文书
企业法律事务工作总结
2015/08/11 职场文书
大学生入党自我鉴定范文
2019/06/21 职场文书
Python WSGI 规范简介
2021/04/11 Python
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
Golang二维数组的使用方式
2021/05/28 Golang