>백엔드 개발 >PHP 튜토리얼 >PHP 체인 작업 구현

PHP 체인 작업 구현

尚
앞으로
2020-03-18 09:50:523119검색

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의 메소드 오버로딩 기능을 실현할 수 있지만 실제로는 구문 설탕입니다(__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 비디오 튜토리얼: https://www.php.cn/course/list/29/type/2.html

위 내용은 PHP 체인 작업 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제