PHP OOP 如何实现这样写法?(new MySQL())->field()->where()->select()
大家讲道理
大家讲道理 2017-04-10 15:04:39
[PHP讨论组]

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

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

    public function select()
    {

    }
}
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
伊谢尔伦

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

阿神
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();
ringa_lee

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号