Bonjour,

J'essaie de m'initier à la poo, mais il y a un truc que je ne comprends pas.

Voici le début d'une class que j'essaie de faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class formulaire
{
    function __construct($id, $action = true, $method = 'post', $class = false)
    {
        $class = ($class == isset($class)) ? 'class="' . $class . '"' : '';
        $action = ($action === true) ? 'action="' . $_SERVER['REQUEST_URI'] . '"' : 'action="' . $_SERVER['PHP_SELF'] . '"';
        $this -> form = "\n" . '<form id="' . $id . '" method="' . $method . '" ' . $class . '">';
        return $this -> form;
    }
 
    function input_text( $name, $texte, $class = null, $value = true, $maxlength = null )
    {
        $value = ($value === true) ? ' value="' . $_POST[$name] . '"' : '';
        $class = ($class !== null) ? ' class="' . $class . '"' : '';
        $maxlength = ($maxlength !== null) ? ' maxlength="' . $maxlength . '"' : '';
        $this -> text = "\n\t" . '<p><label for="' . $name . '">' . $texte . '</label>';
        $this -> text .= "\n\t" . '<input type="text" name="' . $name . '" id="' . $name . '"' . $class . $value . $maxlength . ' /></p>';
        return $this -> text;
    }
}
Bon, ça reste du bidouillage, mais au moins pour une 1ère tentative, ça marche

Je la déclare donc dans ma page appelante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$news = new formulaire('news');
echo $news -> __construct('news');
echo $news -> input_text('titre', 'Titre de la news :');
Le truc qui me tourmente, c'est le echo $news -> __construct('news');

Pourquoi suis-je obligé de réutiliser cette fonction, alors qu'elle est déjà déclarée dans $news = new formulaire('news'); ?

Car si je fais ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$news = new formulaire('news');
$news .= $news -> input_text('titre', 'Titre de la news :');
echo $news;
Php me signale que la ressource est un objet.

Merci !