ホームページ > バックエンド開発 > PHPチュートリアル > Codeigniterでsmartyとadodbを統合する方法の分析

Codeigniterでsmartyとadodbを統合する方法の分析

不言
リリース: 2023-04-01 08:12:01
オリジナル
1703 人が閲覧しました

この記事では主に、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(&#39;Smarty/Smarty.class.php&#39;);
// The setup.php file is a good place to load
// required application library files, and you
// can do that right here. An example:
// require(&#39;guestbook/guestbook.lib.php&#39;);
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(&#39;app_name&#39;, &#39;Guest Book&#39;);
 }
}
?>
ログイン後にコピー

ファイル パスは、現在のファイルの現在のディレクトリではなく、Web サイトのホーム ディレクトリからの相対パスで始まります。たとえば、上記の require('Smarty/Smarty. class.php'); は application/libraries ディレクトリに対して相対的なものではなく、$_SERVER['DOCUMENT_ROOT'] ディレクトリに対して相対的なものです。

adodb.php ファイルの内容は次のとおりです。

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

2) init_adodb.php と init_mysmarty.php をそれぞれapplication/init ディレクトリ。

init_adodb.php ファイルの内容は次のとおりです:

<?php if (!defined(&#39;BASEPATH&#39;)) exit(&#39;No direct script access allowed&#39;);
$obj =& get_instance();
$obj->adodb = new Adodb($obj);
$obj->ci_is_loaded[] = &#39;adodb&#39;;
ログイン後にコピー

init_mysmarty.php ファイルの内容は次のとおりです:

<?php if (!defined(&#39;BASEPATH&#39;)) exit(&#39;No direct script access allowed&#39;);
if ( ! class_exists(&#39;MySmarty&#39;))
{
  require_once(APPPATH.&#39;libraries/mysmarty&#39;.EXT);
}
$obj =& get_instance();
$obj->mysmarty = new MySmarty();
$obj->ci_is_loaded[] = &#39;mysmarty&#39;;
?>
ログイン後にコピー

3) 使用する
application/controllers ディレクトリに必要なファイルを作成します。このように adodb と Smarty を使用できます。

<?php
class Test extends Controller {
 function Test()
 {
  parent::Controller(); 
  $this->load->library(&#39;mysmarty&#39;);
  $this->load->library(&#39;adodb&#39;);
 }
 function index()
 {
 $this->load->library(&#39;adodb&#39;);
 $row = $this->adodb->adodb->getrow(&#39;SELECT * FROM admin&#39;);
    $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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート