2010-02-01 8 views
0

J'utilise zend framework et j'aimerais avoir vos conseils pour modéliser mes cours. J'ai 3 classes Patrimony.php Project.php et Version.php. La version s'étend Le projet étend Patrmimony. En revanche, j'ai une structure de dossiers comme celui-ci /data/patrimonies/projects/versions/Modélisation orientée objet basique en PHP5

Je ne sais pas si je dois utiliser un modèle de conception ou quelque chose comme ça, si le patrimoine a une variable _project de $ qui contient une instance de projet, comment J'instancie ma classe (__construct() params). En bref, je suis très confus avec OOP.

S'il vous plaît me lumière :-)

class Admin_Model_Patrimony { }

class Admin_Model_Project extends Admin_Model_Patrimony { }

class Admin_Model_Version extends Admin_Model_Project { }

+0

Je ne comprends vraiment pas votre question. Mais notez que l'héritage n'est peut-être pas la meilleure solution. La composition pourrait être meilleure. Par exemple. quel est le but de 'Version'? Si un projet peut exister dans plusieurs versions, je le concevrais comme une composition. –

+0

Ok merci pour les conseils Je vais regarder ce modèle. – toddoon

Répondre

0

je regarder le schéma de composition et il semble qu'il est interessant quand vous voulez composer avec un numéro différent des feuilles. Dans mon cas Il y a toujours un patrimoine un projet et une version pour toutes les entités.

Mon but est parfois d'utiliser des informations sur un patrimoine, mais je n'ai besoin que d'informations sur le projet.

Je vous montre comment je conçois mes classes, voir les dernières lignes pour le processus d'exécution et les valeurs attendues. Je pense que ce code ne fonctionne pas alors comment puis-je faire pour définir la variable des parents quand j'instancie un enfant?

// Version
class Version extends Project
private $this->_patId;
private $this->_proId;
private $this->_verId;
{
public function __contruct($patrimonyId, $projectId, $versionId)
{
$this->_patId = $patrimonyId;
$this->_proId = $projectId;
$this->_verId = $versionId;
}
public function getVersionId()
{
return $this->_verId;
}

// Project
class Project extends Patrimony
private $this->_patId;
private $this->_proId;
{
public function __contruct($patrimonyId, $projectId)
{
$this->_patId = $patrimonyId;
$this->_proId = $projectId;
}
public function getProjectId()
{
return $this->_proId;
}

// Patrimony
class Patrimony
private $this->_patId;
{
public function __contruct($patrimonyId)
{
$this->_patId = $patrimonyId;
}
public function getPatrimonyId()
{
return $this->_patId;
}

// Execution
$version = new Version(1,2,3);
$version->getVersionId(); // should return 1
$version->getProjectId(); // should return 2
$version->getPatrimonyId(); // should return 3

Questions connexes