Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个方法属于哪个类?_Php_Oop - Fatal编程技术网

Php 这个方法属于哪个类?

Php 这个方法属于哪个类?,php,oop,Php,Oop,我是OOP新手,有一个一般性的问题 假设我有两个类:AddressBook和Contact。通讯簿包含0-n个联系人 方法getAllContactsFromAddressBook()放在哪里? class AddressBook { private $addressBookId; function __construct($addressBookId) { $this->addressBookId = $addressBookId; }

我是OOP新手,有一个一般性的问题

假设我有两个类:
AddressBook
Contact
。通讯簿包含0-n个联系人

方法
getAllContactsFromAddressBook()
放在哪里?

class AddressBook {
    private $addressBookId;

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

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


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

我会把方法
getAllContacts
放在类
AddressBook

只要试着读一下函数调用的样子就可以了

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

联系人属于通讯簿,所以你要求通讯簿给你他的联系人。

我喜欢用现实生活中的对象来看待它

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

此外,联系人可能位于多个通讯簿中。从各个方面询问地址簿更有意义


因此,它应该是
通讯录
公共函数

很明显,您不想将其放入Contact类中。从逻辑上讲,从一个联系人获取所有联系人是没有意义的。相反,您希望从保存所有联系人的内容中获取所有联系人,在本例中是一个地址簿。
$addressBook = new AddressBook();
$addressBook->getAllContacts();