Совместное использование объектов между классами PHP

Каков наилучший способ совместного использования объектов между другими классами?

Например; объект базы данных с функциями, требуемыми объектами «статья» и «пользователь».

Я не хочу использовать глобальные переменные (включая синглеты) или создавать новый экземпляр объекта в каждом классе, например

function __construct() { $this->database = new database; $this->cache = new cache; } 

Пропустили бы объекты, например.

 class test{ function __construct( $obj ) { $this->obj = $obj; } } $database = new database; $test = new test( $database ); 

Будьте способ пойти?

Да. Передача объектов в конструктор – или в сеттер – это лучший способ. Этот шаблон известен как инъекция зависимости . Он имеет дополнительное преимущество, благодаря чему ваш код легче тестировать (используя заглушки или макеты).

Да, это почти так, как вы хотите. Если класс имеет внешние требования, не создавайте их внутри класса, а требуйте их в качестве аргументов в конструкторе.

Путь к успеху – это одиночные игры, если у них есть один экземпляр. Если нет, единственный способ – передать их во время инициализации (скажем: в конструкторе).

Это будет шагом в правильном направлении, но мне кажется, что вы действительно хотите, чтобы там был синглтон, даже если он не был ограничен кодом.

Вы также можете использовать объекты, которые ранее были загружены в сеанс или в кеш (APC, memcached). Personnaly, я думаю, что singleton – лучший способ пойти туда (особенно для класса базы данных)