Sujet : Hoa_Framework_Parameterizable
Hey ^^
J'ai une class Hoathis_toto et une autre Hoathis_tata.
Comment recup la conf de Hoathis_toto dans Hoathis_Tata (uniquement en lecture) ?
Merci d'avance.
« La structure de toute “chose”, qu'il s'agisse d'un langage, d'une maison, d'une machine etc., se résume à des relations. » — Alfred Korzybski
Vous n'êtes pas logué. Veuillez vous loguer ou vous enregistrer.
Hoa Forum » Dépannages » Hoa_Framework_Parameterizable
Pages 1
Vous devez vous loguer ou vous enregistrer pour poster une réponse
Hey ^^
J'ai une class Hoathis_toto et une autre Hoathis_tata.
Comment recup la conf de Hoathis_toto dans Hoathis_Tata (uniquement en lecture) ?
Merci d'avance.
Hey,
Je relance....
Petite question, qu'est ce que les friends dans Hoa_Framework_Parameterizable ?
Merci
Hey
,
La configuration est propre à un paquetage, donc dans la théorie n'est pas partageable. Sauf que ça m'avait posé des problèmes et donc on peut les partager maintenant.
Voici comment s'y prendre.
Pour le système de partage, on le donne, il n'est pas demandable. Aucune classe ne peut demander les paramètres d'une autre. Elle les reçoit de son propriétaire. Elle les reçoit avec des droits d'écriture, de lecture ou de partage (ce sont des constantes que l'on mélangé avec les opérateurs sur les bits).
Prenons un exemple avec notre classe A, la propriétaire des paramètres.
On crée nos paramètres :
$this->_parameters = new Hoa_Framework_Parameter(
$this,
array('some' => 'keywords'),
array('some' => 'parameters')
);On partage nos paramètres avec B :
$b = new B();
$this->_parameters->shareWith(
// le propriétaire
$this,
// l'ami
$b,
// et les droits
Hoa_Framework_Parameter::PERMISSION_READ |
Hoa_Framework_Parameter::PERMISSION_SHARE
);Ici, B a les droits de lecture et peu également partager à nouveau les paramètres avec une autre classe. Inutile de préciser que B doit implémenter Hoa_Framework_Parameterizable ou ses enfants.
Pas de méthode particulière sur B sinon, elle ne reçoit pas les paramètres en fait, elle a juste les droits de les manipuler. Donc c'est à toi de lui donner les paramètres. Dans tous les cas, tu pourras lui donner en fait, mais si tu n'as pas partager avec un ami, l'objet sera inexploitable.
Hey,
Merci pour l'explication !
Je ne semble pas avoir tout compris car en essayant de me faire un exemple et bien je bloque sur comment s'y prendre.
Voici mon début d'exemple ![]()
class Hoathis_A implements Hoa_Framework_Parameterizable {
private $_parameters = null;
public function __construct ( ) {
$this->_parameters = new Hoa_Framework_Parameter(
$this,
array(
'tata' => 'tataval'
)
array(
'toto' => 'totoval'
)
);
}
public function setParameters ( Array $in ) {}
public function getParameters ( ) {}
public function setParameter ( $key, $value ) {}
public function getParameter ( $key ) {}
public function getFormattedParameter ( $key ) {}
}class Hoathis_B implements Hoa_Framework_Parameterizable_Readable {
private $_parameters = null;
public function __construct ( ) {
$this->_parameters->shareWith(
// le propriétaire
$this,
// l'ami
$b,
// et les droits
Hoa_Framework_Parameter::PERMISSION_READ
);
}
public function getParameters ( ) {}
public function getParameter ( $key ) {}
public function getFormattedParameter ( $key ) {}
}$obj = new Hoathis_B();
echo $obj->getParameter('toto');Est ce possible d'avoir un exemple complet ?
Merci d'avance ^^
Hey
,
Je t'ai dit que c'est la classe propriétaire des paramètres qui partage, et non pas l'inverse
. Dans ton cas, c'est Hoathis_A qui partage avec Hoathis_B.
Je t'écris un exemple.
Voilà :
/**
* Notre object A.
* Il a des paramètres d'où l'interace Hoa_Framework_Parameterizable.
*/
class Hoathis_A implements Hoa_Framework_Parameterizable {
/**
* Ses paramètres.
*/
private $_parameters = null;
/**
* Imaginons qu'il a une classe B.
*/
public $b = null;
/**
* Le constructeur prépare les paramètres, B et lui donne des permissions.
*/
public function __construct ( ) {
$this->_parameters = new Hoa_Framework_Parameter(
$this,
array('foo' => 'bar'),
array('hello' => 'World (:foo:U:)')
);
$this->b = new Hoathis_B($this->_parameters);
$this->_parameters->shareWith(
$this,
$this->b,
Hoa_Framework_Parameter::PERMISSION_READ
);
}
public function setParameters ( Array $in ) {
return $this->_parameters->setParameters($this, $in);
}
public function getParameters ( ) {
return $this->_parameters->getParameters($this);
}
public function setParameter ( $key, $value ) {
return $this->_parameters->setParameter($this, $key, $value);
}
public function getParameter ( $key ) {
return $this->_parameters->getParameter($this, $key);
}
public function getFormattedParameter ( $key ) {
return $this->_parameters->getFormattedParameter($this, $key);
}
}
/**
* Notre classe B, ne peut que lire que des paramètres.
*/
class Hoathis_B implements Hoa_Framework_Parameterizable_Readable {
/**
* Ses paramètres (qui viennent d'on ne sait où).
*/
private $_parameters = null;
/**
* Elle reçoit des paramètres.
*/
public function __construct ( Hoa_Framework_Parameter $p ) {
$this->_parameters = $p;
}
public function getParameters ( ) {
return $this->_parameters->getParameters($this);
}
public function getParameter ( $key ) {
return $this->_parameters->getParameter($this, $key);
}
public function getFormattedParameter ( $key ) {
return $this->_parameters->getFormattedParameter($this, $key);
}
}
/**
* Et hop :-).
*/
$a = new Hoathis_A();
var_dump($a->b->getFormattedParameter('hello'));Hey,
Ok, j'avais piger que tu appelles a qui creer b qui recup les param de la a.
Donc on ne peut pas recup depuis b si on ne passe pas par a.
Dommage... mais c'est logique.
Merci ![]()
Dernière fois dit par tetardo (21 Jan. 2010 14:13)
C'est logique que A maitrise les permissions de partage à B ou C.
C'est dommage car on ne peut pas de développer de classe enfant sans retoucher aux parents.
Hummm !, réflexion....
Oui mais c'est mieux niveau sécurité
.
Posts [ 8 ]
Pages 1
Vous devez vous loguer ou vous enregistrer pour poster une réponse
Hoa Forum » Dépannages » Hoa_Framework_Parameterizable
Powered by PunBB
Currently used extensions: pun_repository, pun_bbcode, pun_pm, pun_quote, pun_antispam. Copyright © 2008 PunBB
[ Généré en 0.072 secondes, 24 requêtes exécutées ]