2009-12-16 14 views
1

Est-il possible d'utiliser la doctrine sur les modèles existants comme entité:zend framework et de la doctrine (accesseurs)

class user{ 
protected $_id; 
protected $_name; 

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

ou pour générer ou utiliser des modèles avec des accesseurs codés en dur.

Je ne veux pas utiliser

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

cela peut-il être fait avec la doctrine?

Thanx

Répondre

3

pour toutes les versions jusqu'à Doctrine 1.2: classe a besoin de votre modèles d'entités pour étendre la classe Doctrine_Record.

La définition des champs du modèle doit également être effectuée de la "manière doctrinale". Voir: http://www.doctrine-project.org/documentation/manual/1_2/en/defining-models

exemple:

fonction publique setTableDefinition() {

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

}

Si vous voulez utiliser votre propre coutume setters codés en dur/getters vous pouvez passer outre les getters/setters magiques. Voir: http://www.doctrine-project.org/documentation/manual/1_2/en/introduction-to-models exemple:

class Utilisateur extends BaseUser {

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

}

Une dernière remarque/question: En utilisant les méthodes setter/getter magie est une bonne pratique .. Vous ne devez utiliser des méthodes personnalisées que si vous devez manipuler les données d'une manière ou d'une autre.

+0

J'ai jeté un coup d'oeil dans la documentation pour la doctrine 2.0 et j'ai trouvé ceci $ user = new CmsUser; $ utilisateur-> setStatus ('utilisateur'); $ utilisateur-> setUsername ('utilisateur'. $ I); $ utilisateur-> setName ('Mr.Smith-'. $ I); –