Духовность™
Продвинутый новичок
Как получать другие объекты из основного объекта?
Читаю я этого вашего Фаулера (в разделе про Datamapper), который говорит о том, что перед тем, как лезть в БД за очередной порцией данных, нужно проверить некую _коллекцию_, не находится ли нужный нам объект там.
Вопрос после пояснения.
Вот у меня такая архитектура: на определенную запись таблицы свой объект и меппер. Чаще всего каждое свойство объекта - это примитивный тип. Например:
допустим, добавляю я в этот класс метод getCity(), который должен возвращать объект типа город:
если я правильно понимаю Фаулера, то в коде метода getCity() должна стоять проверка, а не присутствует ли объект города с ID=$this->user_city_id в какой-то коллекции..
Вопрос: как эту коллекцию лучше устроить? А может и не надо никакой коллекции, а просто достаточно добавить в класс свойство $city_object, которое будет содержать объект, если он уже был ранее запрошен:
Но это криво как-то.
В общем, жду полноценных расписанных ответов от местных гуру.
Читаю я этого вашего Фаулера (в разделе про Datamapper), который говорит о том, что перед тем, как лезть в БД за очередной порцией данных, нужно проверить некую _коллекцию_, не находится ли нужный нам объект там.
Вопрос после пояснения.
Вот у меня такая архитектура: на определенную запись таблицы свой объект и меппер. Чаще всего каждое свойство объекта - это примитивный тип. Например:
PHP:
class Model_User
{
protected $model_attributes = array
(
// ID пользователя в таблице
'id' => array('type'=>'int', 'db_element'=>FALSE, 'default_value'=>0),
// ID города, в котором живет пользователь
'user_city_id' => array('type'=>'int', 'db_element'=>TRUE),
// имя пользователя
'user_name' => array('type'=>'string', 'db_element'=>TRUE),
);
//...
}
PHP:
class Model_User
{
// ...
public function getCity()
{
$city_mapper = new City_Mapper();
return $city_mapper->findById( $this->user_city_id ); // return City_Model
}
}
Вопрос: как эту коллекцию лучше устроить? А может и не надо никакой коллекции, а просто достаточно добавить в класс свойство $city_object, которое будет содержать объект, если он уже был ранее запрошен:
PHP:
class Model_User
{
protected $city_object = NULL;
public function getCity()
{
// если объект ещё не инстанцирован, лезем в базу
if (NULL === $this->city_object)
{
$city_mapper = new City_Mapper();
$this->city_object = $city_mapper->findById( $this->user_city_id );
}
return $this->city_object;
}
}
В общем, жду полноценных расписанных ответов от местных гуру.
впрочем как и GoF.