当前位置:首页 > CMS教程 > 其它CMS > 列表

Codeigniter中集成smarty和adodb的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-13 09:46:42 浏览: 评论:0 

这篇文章主要介绍了Codeigniter中集成smarty和adodb的方法,结合实例形式分析了Codeigniter库的使用技巧,需要的朋友可以参考下。

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

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

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

1)在application/libraries下分别创建mysmarty.php和adodb.php

mysmarty.php文件的内容如下:

  1. <?php 
  2. // load Smarty library 
  3. require('Smarty/Smarty.class.php'); 
  4. // The setup.php file is a good place to load 
  5. // required application library files, and you 
  6. // can do that right here. An example: 
  7. // require('guestbook/guestbook.lib.php'); 
  8. class MySmarty extends Smarty { 
  9.  function MySmarty() 
  10.  { 
  11.     // Class Constructor. 
  12.     // These automatically get set with each new instance. 
  13.     $this->Smarty(); 
  14.     $basedir=dirname(__FILE__); 
  15.     $this->template_dir = "$basedir/templates/"
  16.     $this->compile_dir = "$basedir/templates_c/"
  17.     $this->config_dir  = "$basedir/configs/"
  18.     $this->cache_dir  = "$basedir/cache/"
  19.     //$this->compile_check = true; 
  20.     //this is handy for development and debugging;never be used in a production environment. 
  21.     //$smarty->force_compile=true; 
  22.     $this->debugging = false; 
  23.     $this->cache_lifetime=30; 
  24.     $this->caching = 0; // lifetime is per cache 
  25.     //$this->assign('app_name', 'Guest Book'); 
  26.  } 
  27. ?> 

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

adodb.php文件的内容如下:

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

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

init_adodb.php文件内容如下:

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

init_mysmarty.php文件内容如下:

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

3)使用他们

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

  1. <?php 
  2. class Test extends Controller { 
  3.  function Test() 
  4.  { 
  5.   parent::Controller();  
  6.   $this->load->library('mysmarty'); 
  7.   $this->load->library('adodb'); 
  8.  } 
  9.  function index() 
  10.  { 
  11.  $this->load->library('adodb'); 
  12.  $row = $this->adodb->adodb->getrow('SELECT * FROM admin'); 
  13.     $this->mysmarty->assign("row",$row); 
  14.     $this->mysmarty->display("test.tpl"); 
  15.  } 
  16. ?> 

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

Tags: Codeigniter smarty adodb

分享到: