2009-12-16 2 views
1

Можно ли использовать учение о существующих моделях сущностей, как:рамки Зенд и доктрины (получатели и установщики)

class user{ 
protected $_id; 
protected $_name; 

public function set_id($_id){} 
public function get_id(){} 
public function set_name($_name){} 
public function get_name(){} 
} 

или генерировать или использовать модели с жестко закодированными добытчиками и сеттеров.

Я не хочу использовать

$user->name 
$user['name'] 
$user->get('name') 

это может быть сделано с доктриной?

Thanx

ответ

3

Для всех версий до 1.2 Доктрины: Ваш класс модели сущностей необходимо расширить класс Doctrine_Record.

Определение полей модели должно также быть сделано «доктриной». См: http://www.doctrine-project.org/documentation/manual/1_2/en/defining-models

пример:

общественная функция setTableDefinition() {

$this->hasColumn('username', 'string', 255); 
    $this->hasColumn('password', 'string', 255); 

}

Если вы хотите использовать свой собственный жесткий закодированных Сеттеры/Геттеры вы можете переопределить магические геттеры/сеттеры. См: http://www.doctrine-project.org/documentation/manual/1_2/en/introduction-to-models пример:

класс User расширяет BaseUser {

public function setPassword($password) 
{ 
    return $this->_set('password', md5($password)); 
} 

}

Одно последнее замечание/вопрос: Используя магические методы сеттер/геттер хорошая практика .. Вы должны использовать только собственные методы, если вам нужно каким-то образом манипулировать данными.

+0

Я заглянул в документацию для doctrune 2.0 и нашел это $ user = new CmsUser; $ user-> setStatus ('пользователь'); $ user-> setUsername ('user'. $ I); $ user-> setName ('Mr.Smith-'. $ I); –

Смежные вопросы