如何在模型结构上表示强制业务字段?

MEM*_*MEM 5 php oop zend-framework domain-model

如果我们使用类型提示,我们可以强制放置一个对象:

public function myMethodThatDoFineStuff(MyObject $myobject) {

}
Run Code Online (Sandbox Code Playgroud)

如果,我们想要放置,而不是所有对象,而只是其中一些属性,是强制性的?让我们假设我们的域模型会更好,如果它更好地代表某个域.如果这对我们的业务模型(在我们的域上)更有意义?我们该怎么做?

我们应该总是放置ALL Object而不管是什么?


澄清的例子提出:

让我们想象一下,为了列出某个作者的书籍,我们有这个方法:

public function listBookOfAuthor(Author $author) {

}
Run Code Online (Sandbox Code Playgroud)

现在,让我们想象,笔者对象有200个性能左右,但是,为了处理图书列表,我们只需要他们的第一个最后一个名字.

我们应该收到ALL $ author对象吗?

Jam*_*s C 2

我将通过以下方式测试所需的属性:

public function listBookOfAuthor(Author $author) {

    if (empty($author->firstName)) {
        throw new listBookOfAuthorException('firstName must be defined');
    }

}
Run Code Online (Sandbox Code Playgroud)

如果您发现自己做了很多事情,您可以编写某种父类,其中包含检查属性是否存在的方法。