Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Взаимодействие классов
Покинул форум
Сообщений всего: 2
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Помогите понять.
Классы взаимно объявляются в конструкторе, что вызывает ошибку. Но допустим мне нужно и там и там использовать эти классы (я понимаю что можно просто передать в ф-ю еще один аргумент), как вобще это организовать.
echo'action:'.$action.' , user name: '.$this->users->getName();
}
}
$users=new Users();
$users->addCash(17);
?>
alexiy
Отправлено: 13 Августа, 2014 - 12:15:24
Посетитель
Покинул форум
Сообщений всего: 483
Дата рег-ции: Янв. 2011
Помог: 6 раз(а)
morfey я бы методы логирования сделал бы статическими
esterio
Отправлено: 13 Августа, 2014 - 12:24:51
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
А что вы хотели.
Цитата:
new Users ->new Logs -> new Users ->new Logs -> new Users ->new Logs -> new Users ->new Logs ...
паттерн Registry наверно вам поможет.
DelphinPRO
Отправлено: 13 Августа, 2014 - 12:57:01
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
Во-первых, объект логирования можно передавать из вне
Во-вторых, логгеру абсолютно не нужно знать о других объектах системы. Его задача - записать данные в лог. Готовые данные, которые ему передадут.
В итоге, что-то такое:
Ну и помимо передачи объекта, конечно можно использовать статические методы в логгере, или паттерны синглтон или реестр. Однако DI мне кажется лучше.
----- Чем больше узнаю, тем больше я не знаю.
morfey
Отправлено: 13 Августа, 2014 - 13:15:48
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
DelphinPRO пишет:
Во-первых, объект логирования можно передавать из вне
Во-вторых, логгеру абсолютно не нужно знать о других объектах системы. Его задача - записать данные в лог. Готовые данные, которые ему передадут.
Ну это пример. Не обязательно там логгер будет.
На сколько правильно пользоваться оператором разрешения области видимости (: ?
Тот же код, но объявляется в нужном месте, а не при объявлении родительского класса:
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.