この記事では主に、smarty と adodb を Codeigniter に統合する方法を紹介し、Codeigniter ライブラリの使用スキルをサンプルの形式で分析します。必要な友人は参考にしてください。
この記事の例は、 Codeigniter Adodb メソッドでの Smarty と adodb の統合について説明します。参考までに皆さんと共有してください。詳細は次のとおりです。
CodeIgniter で独自のライブラリを作成するには、2 つのファイルを作成する必要があります。1 つは application/init の下にある init_myclass.php ファイルです (application/init がある場合)。 init ディレクトリはありません。自分で作成してください)。もう 1 つは、application/libraries ディレクトリに myclass.php ファイルを作成することです。
ここで、myclass はクラス名です。いくつかのルールについてはマニュアルを参照してください。ここでは手順のみを説明します。
1) mysmarty.php と adodb.php を application/libraries の下にそれぞれ作成します
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'); } } ?>
ファイル パスは、現在のファイルの現在のディレクトリではなく、Web サイトのホーム ディレクトリからの相対パスで始まります。たとえば、上記の 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) init_adodb.php と init_mysmarty.php をそれぞれapplication/init ディレクトリ。
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 が 2 回必要になるのかわかりませんが、彼の方法は間違っています。自分。おそらく私は CodeIgniter についてあまり詳しくないので、さらに詳しく調べてみると解決策があるかどうかがわかります。しかし、少なくともこれは今のところ機能します。
上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
PHP の Symfony および CodeIgniter フレームワークの Nginx 書き換えルール設定について
CI フレームワークの使用状況分析について$this->load->library()
##
以上がCodeigniterでsmartyとadodbを統合する方法の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。