2016-08-20 68 views
-2

我想知道方法链。最近我在Laravel中使用了方法链,它工作正常。检查调用是否是方法链PHP

我的模型的名称是帖子,所以当我想从帖子中选择所有名称时,它会返回所有名称。

帖子:: select('name');

而当我在下面的函数调用获取一个记录它只给出一个记录。

帖子:: select(name) - > first();

我想在自己班上实现相同的场景。我有一类图片上传。

如果我只上传一个文件,这将是

图片上传::( 'PIC')

但是,如果我上传图片并调整其大小和水印。

Image :: upload('pic') - > resize(200,300) - > addwatermark('image/logo.png');

+0

的可能的复制(http://stackoverflow.com/questions/3724112/php-method-chaining) – Bert

+0

的问题不是一样[PHP方法链接?]!首先阅读,然后评论和投票。谢谢! –

+0

您的帖子中甚至没有问题。我看到“我想在自己班上实现相同的场景”,如何做到这一点在我给出的链接中得到了回答。 – Bert

回答

0

基本上你的方法必须做到:“return $ this;”一旦治疗完成:

public function upload(){ 
    //do something 

    return $this; 
} 

public function resize(){ 
    //do something 

    return $this; 
} 

public function watermark(){ 
    //do something 

    return $this; 
} 
+0

如果我只需要上传文件并返回文件名,那么我无法返回该类的对象。 –

+0

您可以完成整个治疗链方法,然后在完成后调用getFileName方法。 – vincenth

+0

但是在laravel中,我们不需要调用任何获取文件名的函数。我已经考虑过了,整个逻辑都在我心中。但问题是框架如何管理这个问题。 –