Spear
почемучка
Пожалуйста, подскажите - как лучше передавать объкт класса и нужен ли синглтон
Здравствуйте,
поиск использовал - нашло достаточно топиков. Но на мой ответ вопроса я так и не получил.
Дело в том что я, по-моему, стал использовать Registry не в тех целях.
Вот мой класс регистри - http://phpclub.ru/paste/2070
Как работает движок (схематически):
в index.php подключаются файлы нужных классов, и классы, после создания их объекта, записываются в регистри.
Что-то такое:
Потом, в контроллерах уже самог оприложения, например, делается примерно такое:
В чем я сомневаюсь:
1. Правильно ли я использую регистри? она мне, по-сути, заменяет старый "global $blabla". В ней хранится примерно 7-10 объектов классов.
2. Подскажите, пожалуйста: для класса userCore создается объект. Но это только потому что у так сделал я а, как видите, нуждаюсь в помощи
В этом классе есть private свойство users_cache, в которое сохраняется результат метода load_user этого де класса (чтобы не вытаскивать из базы несколкьо раз данные одного и того же юзера, если вдруг где-то в приложении это понадобится). ЗНачит, нужно класс userCore делать синглтоном?
На всякий случай - userCore это класс с общими методами при рбаоте с пользователями (вытащить из бд, выдать список друзей).
Буду очень благодарен за помощь!
Здравствуйте,
поиск использовал - нашло достаточно топиков. Но на мой ответ вопроса я так и не получил.
Дело в том что я, по-моему, стал использовать Registry не в тех целях.
Вот мой класс регистри - http://phpclub.ru/paste/2070
Как работает движок (схематически):
в index.php подключаются файлы нужных классов, и классы, после создания их объекта, записываются в регистри.
Что-то такое:
PHP:
$coreclass = new core_class();
Registry::RegisterClass('coreclass', $coreclass);
Registry::RegisterClass('usersCore', new class_user());
$View = new display();
Registry::RegisterClass('View', $View);
PHP:
class Friends_Controller
{
private $coreclass;
private $userCore; // это объект класса с общими методами при работе с пользователями
private $user; // а это уже объект класса зарегистрированного пользователя
public function __construct()
{
$this->coreclass->Registry::RetrieveClass('coreclass');
$this->user->Registry::RetrieveClass('user');
/** тут же - выкидываем на страницу ошибки если $this->user не авторизирован*/
}
public function run()
{
// Тут получаем то, что запросил пользователь, допустим это список друзей
$this->friends_list();
}
/**
*Список друзей (текущего авторизированного пользователя или другого пользователя, если есть параметр $_REQUEST['id']
*/
private function friends_list()
{
//.......
$this->userCore = Registry::RetrieveClass('userCore');
$uid = $_REQUEST['id'] ? intval($_REQUEST['id']) : $this->user->info('id');
if ($uid !== $this->user->info('id')) $this->userCore->load_user($uid);
$friendsList = $this->userCore->build_friends_list($uid);
//.....
return $friendsList;
}
}
1. Правильно ли я использую регистри? она мне, по-сути, заменяет старый "global $blabla". В ней хранится примерно 7-10 объектов классов.
2. Подскажите, пожалуйста: для класса userCore создается объект. Но это только потому что у так сделал я а, как видите, нуждаюсь в помощи
В этом классе есть private свойство users_cache, в которое сохраняется результат метода load_user этого де класса (чтобы не вытаскивать из базы несколкьо раз данные одного и того же юзера, если вдруг где-то в приложении это понадобится). ЗНачит, нужно класс userCore делать синглтоном?На всякий случай - userCore это класс с общими методами при рбаоте с пользователями (вытащить из бд, выдать список друзей).
Буду очень благодарен за помощь!
