ホームページ  >  記事  >  バックエンド開発  >  php call() メソッドは一貫したデータベース操作を実装します。

php call() メソッドは一貫したデータベース操作を実装します。

WBOY
WBOYオリジナル
2016-06-20 12:35:251067ブラウズ

背景: jquery にはチェーン操作と呼ばれる DOM があり、PHP も SQL を記述するときに次のような同様のメソッドを使用できます。

/* * ユーザーのページ分割されたアルバムを取得するデータベースからのレコード * * * @param str|array $where クエリ条件 * @param int $page 現在のページ * @param int $perpage 各ページに表示されるレコード数 * @param str $order ソートの種類 * @param str $ asc 昇順/降順 * @return 配列 条件を満たすレコード / public function getUsersAlbumFromDB($where, $page, $perpage, $order, $asc) { $offset = ($page - 1) * $dataList; = $this->getSelectObj() ->where($where) ->order($order, $asc) ->limit($ perpage, $offset) ->fetchObject();

この記述方法は、次のように Jquery のチェーン記述方法に似ています。

$ (this).find ("div").css ("background", "red").end().siblings ().find ("div").css ("background", "green");

__call 関数の関連紹介: http://justwinit.cn/post /2834/

======================================== ======= ====

__call() メソッドを使用して一貫したデータベース操作を実現します

<?php  // 使用__call()方法来实现数据库连贯操作 // 申明一个Db类(数据库操作类)的简单操作模型class Db{    private $sql = array(        "field" => "",        "where" => "",        "order" => "",        "limit" => "",        "group" => "",        "having" => "",    );       // 连贯操作调用field() where() order() limit() group() having()方法,组合sql语句    function __call($methodName,$args){        // 将第一个参数(代表不存在方法的方法名称),全部转成小写方式,获取方法名称        $methodName = strtolower($methodName);               // 如果调用的方法名和成员属性数组$sql下标对应上,则将第二个参数给数组中下标对应的元素        if(array_key_exists($methodName,$this->sql)){            $this->sql[$methodName] = $args[0];        }else{            echo '调用类'.get_class($this).'中的方法'.$methodName.'()不存在';        }        // 返回自己对象,则可以继续调用本对象中的方法,形成连贯操作        return $this;    }    // 输出连贯操作后组合的一个sql语句,是连贯操作最后的一个方法    function select(){        echo "SELECT {$this->sql['field']} FROM  user {$this->sql['where']} {$this->sql['order']} {$this->sql['limit']} {$this->sql['group']}                {$this->sql['having']}";    }}$db = new Db();// 连贯操作$db->field('sex, count(sex)')   ->where('where sex in ("男","女")')   ->group('group by sex')   ->having('having avg(age) > 25')   ->select();?>

---------- PHP のデバッグ - ------- --

性別 (「男性」、「女性」) を性別でグループ化したユーザーから性別、カウント(性別)を選択

平均(年齢) > 25

出力完了 (0 秒消費) - 正常終了

出典: http://blog.sina.com.cn/s/blog_6109978501017154.html

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。