Rumah > pembangunan bahagian belakang > tutorial php > PHP OOP 如何实现这样写法?(new MySQL())->field()->where()->select()

PHP OOP 如何实现这样写法?(new MySQL())->field()->where()->select()

WBOY
Lepaskan: 2016-06-06 20:41:54
asal
1145 orang telah melayarinya

在很多MVC框架,比如ThinkPHP,Laravel 中看到这样的写法。
但如何写类才可以实现这样的功能?

<code>$s = (new MySql())
    ->field('*')
    ->table('Test')
    ->where(array('id' => 1))
    ->select();
var_dump($s);
</code>
Salin selepas log masuk
Salin selepas log masuk
<code>//报错 Fatal error: Call to undefined method MySql::field() in 
class MySql
{

    public function select()
    {

    }
}
</code>
Salin selepas log masuk
Salin selepas log masuk

回复内容:

在很多MVC框架,比如ThinkPHP,Laravel 中看到这样的写法。
但如何写类才可以实现这样的功能?

<code>$s = (new MySql())
    ->field('*')
    ->table('Test')
    ->where(array('id' => 1))
    ->select();
var_dump($s);
</code>
Salin selepas log masuk
Salin selepas log masuk
<code>//报错 Fatal error: Call to undefined method MySql::field() in 
class MySql
{

    public function select()
    {

    }
}
</code>
Salin selepas log masuk
Salin selepas log masuk

如果你看过jQuery的源码,就知道了,return this就能chain起来,同理在php中,你需要return $this;

<code>class Test{

    public function aaa(){
        echo "aaa";
        return $this;
    }

    public function bbb(){
        echo "bbb";
        return $this;
    }

    public function ccc(){
        echo "ccc";
        return $this;
    }
}

$test = new Test();

$test->aaa()->bbb()->ccc();
</code>
Salin selepas log masuk

链式操作,现在是可以的,我的版本是5.2.17

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan