ホームページ  >  記事  >  バックエンド開発  >  CodeIgniter のデータベース アクセスの抽出 class_PHP チュートリアル

CodeIgniter のデータベース アクセスの抽出 class_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:46:02689ブラウズ

そうですね、組織のニーズにより、私は最近再び PHP に切り替え始めました。主に上司がデータ アクセス層にログイン認証を追加する必要があるため、ビジネス ロジックは問題ありません。
実際、この要件は合理的です。インターネット サービスでは、上位層が下位層を保護する必要がありますが、下位層は上位層を完全に信頼することはできません。しかし、問題が 2 つあります:
1. 呼び出し元からのリクエストを組み立てて呼び出し側に返す mysql プロキシ サーバーを作成します。これを行う際の主な困難は次のとおりです:
a) SQL ステートメントのアセンブリとシリアル化
b) データセットのシリアル化。この分野には多くのプロダクトがありますが、結局のところ複雑すぎて、いじる時間がありません
思い切って諦めましょう。
2. mysql API の層をカプセル化すると、呼び出し元はそれをローカルで直接呼び出すことができます。この場合、考慮する必要があるのは SQL ステートメントのアセンブリだけです。今は選択肢がたくさんあります
a) django の Model に似たモデルクラスを使用します
b) ci
でアクティブレコードを使用する Model メソッドはデータ層のシールドに優れていますが、チーム メンバーは一般に、このメソッドが軽量である場合には重すぎると考えており、最終的に CodeIgniter の AR を選択しました。
さて、今度は ci モジュールの分割が適切かどうかをテストします。
難しい作業の詳細については説明しませんが、システム データベースを別のディレクトリ x:/php/ にコピーする、最終的な実装について話しましょう。
ファイル myconfig.php を作成します:
定義('BASEPATH', dirname(__FILE__).'/');
定義('EXT', '.php');
require_once(BASEPATH . 'データベース/DB' . EXT);

関数&instantiate_class(&$class_object)
{
$class_object を返します;
}

関数 log_message($level = 'error', $message, $php_error = FALSE)
{
エコー($message);
}
関数MYDB()
{
$params = 配列(
'dbdriver' => 'mysql',
'ホスト名' => 'ローカルホスト',
'ユーザー名' => 'root',
'パスワード' => '',
'データベース' => 'ダンテ',
'pconnect' => TRUE、
'db_debug' => 偽、
'cache_on' => FALSE、
'char_set' => 'utf-8',
'dbcollat​​' => 'utf8_general_ci',
);
$db = DB($params,TRUE); $db を返します;
}
?>
テスト ファイル test.php を作成します:

require_once('myconfig.php');
$db = MYDB();
$db->select('ID,ユーザーログイン,ユーザーメール');
$query = $db->get('wp_users');
エコー「n」;
foreach ($query->result() as $row)
{
$row->ID を出力します。 "n";
$row->user_login を印刷します。 "n";
$row->user_email を印刷します。 "n";
}
?>
入力結果は以下の通りです:

データベースドライバークラスが初期化されました

1
管理者
zny2008@gmail.com
OK~~~ このように、データアクセス前に権限検証が必要な場合は、MYDB関数内で判断するだけで済みます。
さらに、ci モジュールの分割は systemcodeigniterCommon.php から来ていると言わざるを得ません。各呼び出し元が異なる方法でログを書きたいため、log_message を書き直しました。 (例えば今回は画面に直接印刷しましたが…), 最近たまたまデザインパターンを見ていたのですが、この方法もテンプレートメソッドのパターンと一致しています。

著者「オオカミのパーソナルスペース」

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478617.html技術記事そうですね、組織のニーズにより、私は最近再び PHP に切り替え始めました。主に上司がデータ アクセス層にログイン認証を追加する必要があるため、ビジネス ロジックは問題ありません。 実際、この要求は合理的です...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。