这个方法属于哪个类?

时间:2014-08-12 14:30:36

标签: php oop

我对OOP很新,并且有一个普遍的问题。

想象一下,我有两个课程:AddressBookContact。地址簿包含0-n个联系人。

您在哪里放置方法getAllContactsFromAddressBook()

class AddressBook {
    private $addressBookId;

    function __construct($addressBookId) {
         $this->addressBookId = $addressBookId;
    }

    // HERE?
    // getAllContactsFromAddressBook() { ... }
}

class Contact {
    private $contactId;

    function __construct($contactId) {
         $this->contactId = $contactId;
    }

    function getContactDetails($contactId) { ... }

    // OR BETTER HERE?
    // getAllContactsFromAddressBook($addressBookId) { ... }
}

在这种情况下,最佳做法是什么?谢谢你的解释!

2 个答案:

答案 0 :(得分:8)

我会把方法AddressBook放在课程getAllContacts内。

尝试阅读函数调用的样子

$addressBook = new AddressBook();
$addressBook->getAllContacts();

联系人属于地址簿,因此您要求地址簿给您联系。

答案 1 :(得分:4)

我喜欢用现实生活中的物体来思考它。

如果我想要通讯录中的所有联系人,我将转到地址簿并从中获取联系人。我不会去联系人并说“你和同一个地址簿里的联系人是什么?”

此外,联系人可能在多个地址簿中。以各种方式询问地址簿更有意义。

因此,它应该是public function的{​​{1}}。

相关问题