时间:2021-07-01 10:21:17 帮助过:37人阅读
本文实例讲述了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的Symfony和CodeIgniter框架的Nginx重写规则配置
关于CI框架中$this->load->library()的用法分析
以上就是关于在Codeigniter中集成smarty和adodb的方法解析的详细内容,更多请关注Gxl网其它相关文章!