Bonjour tout le monde.
Je débute reelement dans le doamine de la POO.
Je viens vers vous afin d'avoir une aide de votre part.
Je souhaiterais faire appel aux méthodes/fonctions d'une classe mais de cette facon:

$f->champLabel("Nom du label")->champInput("type", "name");

Probleme c est que je ne sait absolument pas comme procéder du coté de ma classe. A l heure actuelle j'ai crée ceci:

class Form {
    private $method;
    private $action;
    private $class;
    function __construct($method, $action, $class=null) {
        $this->method = $method;
        $this->action = $action;
        $this->class = $class;
    }
    function champINPUT($type, $name) {
        $r .= "<input type='".$type."' name='".$name."' >";
        return $r;
    }
    function champLABEL($name) {
        $r = "<label>".$name."</label>";
        return $r;
    }
}

Donc je voulais savoir comme puis je faire maintenant pour avoir a saisir simplement ca pour créer le Label et le input en question:

$f->champLabel("Nom du label")->champInput("type", "name");

Merci d'avance.

5 réponses


Grafikart
Réponse acceptée

Mmh si tu veux chain les fonctions ils faut qu'à la fin de chaque fonction tu retourne l'objet, comme ça tu peux continuer les fonctions
Par exemple au lieu de return $r tu fais

echo $r;
return $this;
Grafikart
Réponse acceptée

Ben tu peux pas vraiment parceque si tu retourne l'objet à chaque fois tu ne pourra pas return $r à la fois du coup la solution c'est d'echo à chaque fonction. du coup tu dois enlever ton echo.

mikamika
Auteur

oki merci je vais essayer ca.

Par contre si je fais:

echo $f->champLabel("Nom du label")->champInput("type", "name");

le

echo $r;

devient inutile, non?

mikamika
Auteur

Donc pour conclure ma classe se présentera ainsi ?

class Form {
    private $method;
    private $action;
    private $class;
    function __construct($method, $action, $class=null) {
        $this->method = $method;
        $this->action = $action;
        $this->class = $class;
    }

    function champINPUT($type, $name) {
        echo "<input type='".$type."' name='".$name."' >";
        return $this;
    }
    function champLABEL($name) {
        echo "<label>".$name."</label>";
        return $this;
    }
}

ET DERNIERE QUESTION:

set_include_path();

Tu en penses quoi ?

Je ne l'utilise pas :)