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.

Le code c'est comme le paic citron, quand il y en a plus... il y en a encore !

2

Re : Hoa_Framework_Parameterizable

Hey,

Je relance....

Petite question, qu'est ce que les friends dans Hoa_Framework_Parameterizable ?

Merci

Le code c'est comme le paic citron, quand il y en a plus... il y en a encore !

3

Re : Hoa_Framework_Parameterizable

Hey smile,

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.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

4

Re : Hoa_Framework_Parameterizable

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 tongue

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 ^^

Le code c'est comme le paic citron, quand il y en a plus... il y en a encore !

5

Re : Hoa_Framework_Parameterizable

Hey smile,

Je t'ai dit que c'est la classe propriétaire des paramètres qui partage, et non pas l'inverse smile. 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'));
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

6

Re : Hoa_Framework_Parameterizable

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 big_smile

Dernière fois dit par tetardo (21 Jan. 2010 14:13)

Le code c'est comme le paic citron, quand il y en a plus... il y en a encore !

7

Re : Hoa_Framework_Parameterizable

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....

Le code c'est comme le paic citron, quand il y en a plus... il y en a encore !

8

Re : Hoa_Framework_Parameterizable

Oui mais c'est mieux niveau sécurité smile.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »