PHPチェーン操作の実装

リリース: 2023-04-08 13:22:01
転載
3093 人が閲覧しました

PHPチェーン操作の実装

PHP でのチェーン操作のポイントは、操作完了後に $this を返すことです;

1. __call メソッドを使用せずにチェーン操作を実装します

<?php
class Sql{
    private $sql=array("from"=>"",
            "where"=>"",
            "order"=>"",
            "limit"=>"");

    public function from($tableName) {
        $this->sql["from"]="FROM ".$tableName;
        return $this;
    }

    public function where($_where=&#39;1=1&#39;) {
        $this->sql["where"]="WHERE ".$_where;
        return $this;
    }

    public function order($_order=&#39;id DESC&#39;) {
        $this->sql["order"]="ORDER BY ".$_order;
        return $this;
    }

    public function limit($_limit=&#39;30&#39;) {
        $this->sql["limit"]="LIMIT 0,".$_limit;
        return $this;
    }
    public function select($_select=&#39;*&#39;) {
        return "SELECT ".$_select." ".(implode(" ",$this->sql));
    }
}

$sql =new Sql();

echo $sql->from("testTable")->where("id=1")->order("id DESC")->limit(10)->select();
//输出 SELECT * FROM testTable WHERE id=1 ORDER BY id DESC LIMIT 0,10
?>
ログイン後にコピー

2. __call メソッドを使用してチェーン操作を実装する

__call() は、オブジェクトがアクセスできないメソッドを呼び出すときにトリガーされるため、クラスの動的メソッドの作成と PHP のメソッドの再利用を実現できます。 .loading 関数ですが、実際には糖衣構文です (__construct() メソッドと同様)。

<?php
class String
{
    public $value;

    public function __construct($str=null)
    {
        $this->value = $str;
    }

    public function __call($name, $args)
    {
        $this->value = call_user_func($name, $this->value, $args[0]);
        return $this;
    }

    public function strlen()
    {
        return strlen($this->value);
    }
}
$str = new String(&#39;01389&#39;);
echo $str->trim(&#39;0&#39;)->strlen();
// 输出结果为 4;trim(&#39;0&#39;)后$str为"1389"
?>
ログイン後にコピー

関連する推奨事項:

PHP ビデオ チュートリアル: //m.sbmmt.com/course/list/29/type/2.html

以上がPHPチェーン操作の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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