Каков наилучший способ совместного использования объектов между другими классами?
Например; объект базы данных с функциями, требуемыми объектами «статья» и «пользователь».
Я не хочу использовать глобальные переменные (включая синглеты) или создавать новый экземпляр объекта в каждом классе, например
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 – лучший способ пойти туда (особенно для класса базы данных)