PHP コヒーレント操作の実装_PHP チュートリアル

WBOY
リリース: 2016-07-13 09:56:41
オリジナル
1003 人が閲覧しました

phpコヒーレント操作の実装

一部のフレームワーク (ThinkPHP など) を使用してコーディングする場合、このようなコードをよく使用します。
M('ユーザー')->where(配列('id'=>1))->フィールド('名前')->select();
これはコーディングに役立つだけでなく、人々に「幸せな気分」をもたらします。さて、これ以上言うことはありません。やり方を見てみましょう?
//データベース操作基本クラス[追記:メイン関数コヒーレント関数実装]
クラス DB{
//この属性は、一貫した操作を実現するためのメソッド名を定義します
public $sql = array(
"フィールド" => "",
「どこ」 => 「」、
「注文」=>「」、
"制限" => "",
"グループ" => "",
「持っている」=>「」、
);

/**
* 連続した操作の場合は、field() where() order() limit() group() getting() メソッドを呼び出して SQL ステートメントに結合します
※このメソッドはPHPのマジックメソッドです
クラスに存在しないメソッドを呼び出すと自動的に呼び出されます。 * @param $methodName 存在しないメソッドを呼び出す場合、メソッド名の文字列を受け取ります
* @param $args 存在しないメソッドを呼び出す場合、そのメソッドのパラメータを配列で受け取ります
*/
function __call($methodName,$args){
//リクエストされたメソッド名を小文字に変換します
$methodName=strto lower($methodName);
//リクエストメソッド名がメンバー属性配列の$sql添字に対応する場合、2番目のパラメータを配列内の「添字に対応する要素」に割り当てます
;
if(isset($this->sql[$methodName])){
$this->sql[$methodName]=$args[0];
}その他{
echo '呼び出しクラス '.get_class($this).' の '.$methodName.'() メソッドが存在しません';
}
// オブジェクトを返します。これにより、このオブジェクト内のメソッドを引き続き呼び出して一貫した操作を形成できます
$this を返します;
}

/**
* このメソッドを使用して select SQL ステートメントに結合します。[PS: このメソッドは連続操作を終了し、連続操作の最後に配置されます]
*/
関数 select(){
//sql 文字列を選択構文に従って結合します [追記: mysql コマンドラインで「help select;」を実行すると構文構造を表示できます]
$sql="SELECT {$this->sql['field']} FROM テスト {$this->sql['where']} {$this->sql['group']} {$this- >sql['having']} {$this->sql['order']} {$this->sql['limit']}";
エコー $sql;
}
}

$obj=新しいデータベース();

$obj->field('名前,性別,住所')->where('where name="guoyu"')->limit('limit 1')->select();

//出力: SELECT 名前、性別、住所 FROM test where name=guoyulimit 1

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/986703.html技術記事 PHP の一貫した操作の実装 いくつかのフレームワーク (ThinkPHP など) を使用してコーディングする場合、このようなコードを使用することがよくあります。 M(User)-where(array(id=1))-field(name)-select(); これはコーディングに役立つだけではありません...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!