如何避免使用多个参数创建函数/方法?

时间:2017-03-05 04:44:26

标签: php

假设我有像这样的存储库类方法来创建post:

 public function create($title, $slug, $custom_slug = '', $meta_keyword, $body, $meta_description, $status, $bla, $bla)

有没有办法以正确的方式避免这种情况?因为我认为如果有很多参数并且不易读,那就不好了。我经常把价值放在错误的地方因为我不记得参数订单。

如果我将参数设置为如下数组:

public function create(array $columns)

但客户端不知道哪些必需参数,哪些不是。

2 个答案:

答案 0 :(得分:-1)

通常,您可以通过将参数作为数组传递来解决此问题。或者,您可以将参数设置为公共静态字段,以便可以在方法中访问它们,而无需将它们作为参数传递。

答案 1 :(得分:-1)

你可以创建一个这样的类:

class Post {
    protected $title;
    protected $body;
    protected $slug;
    protected $metaKeyword; 
    protected $metaDescription;
    protected $status;

    function __construct($title, $body) {
        $this->setTitle($title);
        $this->setBody($body);
    }

    public function setTitle($title) {
        $this->title = $title;
    }

    public function setBody($body) {
        $this->body = $body;
    }

    public function setSlug($slug) {
        $this->slug = $slug;
    }

    public function setMetaKeyword($metaKeyword) {
        $this->metaKeyword = $metaKeyword;
    }

    public function setMetaDescription($metaDescription) {
        $this->metaDescription = $metaDescription;
    }

    public function setStatus($status) {
        $this->status = $status;
    }

    public function save() {
        // do something here
    }
}
$post = new Post('Example', 'This is a body');
$post->setSlug('example-post');
$post->save();