Formulaire avec OOP

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 avr. 2011, 11:03

salut,

tu peut simplement utiliser des "setter" pour utiliser ces options si besoin est.

tu ne passe dans le constructeur que les éléments "obligatoire" c'est a dire le type et le nom de l'input les autre étant facultatif (value etc) et ainsi avoir une utilisation plus plausible d'une classe qui final ressemble plus a une fonction qu'a une classe. D'ailleur une classe pour écrire <form .. .> et </form> c'est pas forcément utilise, tu peut faire une classe 'formulaire' qui s'occupe de tous, tu aurais juste a ajouter les noms des inputs dans l'instance de la classe et quand tu le souhaite tu affiche le formulaire (genre $f ->display()) ;)

exemple
<?php
########### Class des Inputs
class formulaire {
    // propriétés de InputField
    private $name;
    private $value;
    private $type;
    private $id;
    private $class;
    private $inputType;
    private $action;
    private $formMethod;
    private $method;
    private $error;
    private $form;
    private $afterinput;

    /**
     * constructeur
     * @param string $action
     * @param string $method
     */
    public final function __construct($action,$method='post'){
        // les types de champs input possible a compléter ;)
        $this->inputType =array('submit' ,'text','password','radio','checkbox');
        $action = trim($action);
        if (!empty($action) && (strlen($action) !== 0)) {
            // on peu aussi ajouter un test sur l'existance du fichier ou autre
            // le strlen exclu le fait que la balise action peut être vide, il faudra donc utiliser "PHO_SELF"
            $this->action= $action ;
        }
        $this->formMethod = array('post','get');
        $method = trim($method);
        if ( !empty($method) && in_array($method, $this->formMethod)){
            $this->method = $method;
        }
        //permet d'indiquer ce que l'on met après un input, classique un saut de ligne mais pas forcément ....
        $this->afterinput='<br />';
     }
     /**
      * Ajout d'un champs  input dans le formulaire, text par défaut car c'est l'un des plus utilisé, valeur discutable !
      * @param string $name
      * @param string $type
      * @return bool
      */
     public final function addInput($name,$type='text'){
         //Est ce que le type existe dans les type prévu ?
         if (!empty($type) && in_array($type, $this->inputType)) {
             $name = trim($name);
             if (!empty($name)){
                 $this->name[] = $name;
                 $this->type[ $name] = $type;
                 return true;
             }
             else {
                 $this->error[] = 'Le champ nom ne peut être vide !';
             }

         }
         else {
             $this->error[] = 'Le type de champs '.htmlspecialchars($type). ' n\'existe pas veuillez utiliser l\'une des valeurs suivantes : '.
                     implode(', ',$this->inputType);
             return false;
         }
     }
     /**
      * Permet d'ajouter une valeur à un champ, ne prend pas en compte les champs a valeur multiple (radio, checkbox etc)
      * @param string $name
      * @param string $value
      * @return bool
      */
     public final function SetValue($name,$value){
         if (!empty($name) && in_array($name,$this->name)){
             $this->value[ $name ] = trim($value);
             return true;
         }
         else {
             $this->error [] = 'Le nom de champ n\'existe pas ! ';
             return false;
         }
     }

     public final function SetId($name,$idname){
         //
     }
     public final function SetClass($name,$idname){
         //
     }
     /**
      * Génére le formulaire final
      * @return <type>
      */
     public final function createform(){
         if (!empty($this->action) && !empty($this->method)) {
             $this->form = '<form action="'.$this->action.'" method="'.$this->method.'">'."\n";
             if (is_array($this->name) && count($this->name)>0){
                 foreach ($this->name as $input){
                     if (isset($this->id[ $input ])) {
                         $this->form .= '<label for="'.$this->id[ $input ].'">'.$input.'</label>';
                     }
                     else {
                         // si il n'y a d'id pour ce champ je choisis d'afficher le nom correctement avant avec un span
                         // sauf dans le cas d'un submit
                         if ($this->type[$input] !== 'submit') {
                             $this->form .= '<span>'.$input.'</span>';
                         }
                     }
                     $this->form .= '<input type="'.$this->type[$input].'" name="'.$input.'" ';
                     // s'il existe une valeur je l'utilise
                     if (isset($this->value[ $input ])){
                         $this->form .= 'value="'.$this->value[ $input ].'" ';
                     }
                     // s'il existe une classe je l'utilise
                     if (isset($this->class[ $input ])){
                         $this->form .= 'value="'.$this->class[ $input ].'" ';
                     }
                     // s'il existe un id je l'utilise
                     if (isset($this->id[ $input ])){
                         $this->form .= 'value="'.$this->id[ $input ].'" ';
                     }
                     $this->form .= '/>'.$this->afterinput."\n";
                 }
             }
             else {
                 $this->error[] = 'Il faut au moins un champ pour un formulaire';
             }
             $this->form .= '</form>';
         }
         else {
             $this->error[] = 'Il faut indique une actio et une méthode avant affichage !';
             return false;
         }
     }
     /**
      * Permet de retourner le formulaire construit
      * @return string
      */
     public final function display(){
         if (empty ($this->form)){
             $this->createform();
         }
         return $this->form;
     }

     /**
      * Permet d'afficher les erreurs
      * @return string
      */
     public final function getError(){
         $ret = '';
         if ( is_array($this->error) && (count($this->error)>0)){
             foreach ($this->error as $erreur){
                 $ret .= $erreur."\n";
             }
             return $ret;
         }
         else {
             return 'Aucune erreur tous va bien :)';
         }
     }
}
?>
et pour utiliser
<?php
var_dump($_POST); // permet de controler le contenu du formulaire pour le test
$formulaire = new formulaire('rimie.php');
$formulaire->addInput('pseudo');
$formulaire->SetValue('pseudo', 'Entrer votre pseudo ici');
$formulaire->SetId('pseudo', 'pseudo');
$formulaire->addInput('pwd','password');
$formulaire->SetId('pwd', 'pwd');
$formulaire->SetValue('pwd', '******');
$formulaire->addInput('Valider','submit');
//$formulaire->createform();
echo $formulaire->display();
?>
j'ai mis createform en commentaire car optionnel vu qu'il est utilisé dans la méthode display. Cette méthode est a appeler si tu modifie un champ de formulaire après la création du formulaire pour le re générer (on ne sait jamais ;) ).

bien sur cette classe n'est pas parfaite, l'utilisation est verbeuse mais est générique. Elle est aussi très incomplète car elle ne gère pas tous les type d'input, pas de gestion particulière des radio ou checkbox qui peuvent ou non être cochée, pas de gestion de la textarea, du type button etc etc ;)

@+
Il en faut peu pour être heureux ......

rimie1
Invité n'ayant pas de compte PHPfrance

14 avr. 2011, 03:46

moogli: methode complete mais compliquee, je vais l'etudier, je vais commencer par cette de sadeq et enfin arriver a la votre, merci

rimie1
Invité n'ayant pas de compte PHPfrance

14 avr. 2011, 03:54

est ce qu'on dit: "public final function" ou bien final public function
public final function __construct($action,$method='post'){
$this->inputType =array('submit' ,'text','password','radio','checkbox');
$this->inputType: revient a quoi exactement?

Est ce que je peux faire comme ca:
public final function __construct($action,$method='post'){
$this->inputType = $inputType;

// apres je l'appelle comme ca:

$inputType =array('submit' ,'text','password','radio','checkbox');


rimie1
Invité n'ayant pas de compte PHPfrance

14 avr. 2011, 04:28

Ainsi j'ai remarque que l'id et la classe ne s'affichent pas, apres affichage de la source HTML, je pense cause de:
 public final function SetId($name,$idname){
         //
     }
     public final function SetClass($name,$idname){
         //
     }

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

14 avr. 2011, 12:08

Voici une ébauche de modèle de classes avec héritage qui complète la vue objet que j'ai déjà donné :
<?php
class Form {
    // propriétés
    public $name;
    public $method;
    public $action;
	public $class;
	public $id;
	public $collectionChamps = array(); // relation Form et ses champs (Field)

    // construction de l'objet
    public function __construct($name="", $method="get", $action="", $id="", $class="") {
       $this->name 		= $name;
       $this->method 	= $method;
       $this->action 	= $action;
       $id = trim($id)==""?$name:$id;
       $this->id 		= $id;
       $this->class		= $class;
	}
	// méthodes
	public function afficherEntete()
	{
       // imprimer l'entête
       echo "<form id=\"{$this->id}\" name=\"{$this->name}\" method=\"{$this->method}\" action=\"{$this->action}\" class=\"{$this->class}\">";
    }
    public function afficherPied()
    {
       // imprimer la fin du Form
	   echo "</form>";
    }
	public function ajouterChamp($champ)
	{
		// ajouter un champ à la collection des champs du Form
		// tableau indexé par id de champ => champ unique + simplifier la recherche
		$this->collectionChamps[$champ->id] = $champ; 
	}
	public function majChamp($champ)
	{
		// mettre à jour les données d'un champ existant
		if (isset($this->collectionChamps[$champ->id])) 
			$this->collectionChamps[$champ->id] = $champ; 
	}
	public function supprimerChamp($champ)
	{
		// supprimer un champ existant
		if (isset($this->collectionChamps[$champ->id])) 
			unset($this->collectionChamps[$champ->id]); 
	}
}

class Field   {
    // propriétés 
	public $id;
	public $name;
	public $value; 
    public $class;
	public $codeHTML;
	
     // construction de l'objet
    function __construct($id, $name="", $value="", $class="")     
	{
         $this->id 	= $id;
         $name = trim($name)==""?$$id:$name;
         $this->name 	= $name;
		 $this->value 	= $value;
         $this->class	= $class;
     }
	 // Méthodes
	 public function afficher()
	 {
	 	echo $this->codeHTML;
	 }    
}
class Input extends Field   {
    // propriétés    
	public $type 		= "text";
	public $label		= "";
	public $size		= "auto"; 
	public $maxlength	= "auto";
	
     // construction de l'objet  (et de sa mère Field)
    function __construct($id, $name="", $value="", $type="text", $label="", $class="", $size="auto", $maxlength="auto")     
	{
         // dispatching des valeurs initiale entre classe mère et fille
		 // init propriétés héritées de la classe mère (Field)
		 parent::__construct($id, $name, $value,  $class); 
		 // init propriétés spécifique de la classe fille 
         $this->type 		= $type;
         $this->label 		= $label;
         $this->size 		= $size;
         $this->maxlength	= $maxlength;
		 
		 // gérération du code HTML équivalent
		 $this->codeHTML = "<label for=\"$name\">$label</label><input type=\"$type\" id=\"$id\" name=\"$name\" value=\"$value\" size=\"$size\" maxlength=\"$maxlength\" class=\"$class\" />";

	 }    
}
class TextArea extends Field   {
    // propriétés    
	public $label		= "";
	public $cols		= "auto"; 
	public $rows		= "auto";
	
     // construction de l'objet (et de sa mère Field)
    function __construct($id, $name="", $value="", $label="", $class="", $cols="auto", $rows="auto") 
	{
         // dispatching des valeurs initiale entre classe mère et fille
		 // init propriétés héritées de la classe mère (Field)
		 parent::__construct($id, $name, $value, $class); 
		 // init propriétés spécifique de la classe fille 
         $this->label 		= $label;
         $this->cols 		= $cols;
         $this->rows		= $rows;
		 
		 // gérération du code HTML équivalent 
		 $this->codeHTML = "<label for=\"$name\">$label</label><br /><textarea id=\"$id\" name=\"$name\" cols=\"$cols\" rows=\"$rows\"  class=\"$class\" >$value</textarea>";

	 }    
}
// test des classes
$f1 = new Form("monForm1");

// Les champs du Form
$f1->ajouterChamp(new Input("id_nom", "nom", "", "text","Nom : "));
$f1->ajouterChamp(new Input("id_prenom", "prenom", "", "text", "Prénom : "));
$f1->ajouterChamp(new TextArea("id_adresse", "adresse", "", "Adresse : ", "", 40, 4));

$f1->ajouterChamp(new Input("id_pseudo", "pseudo", "", "text","Pseudo : "));
$f1->ajouterChamp(new Input("id_motDePasse","motDePasse", "", "password", "Mot de passe : "));

$f1->ajouterChamp(new Input("id_newsLetter_oui","newsLetter", "oui", "checkbox", "Oui, je veux recevoir la Newsletter par mail"));
$f1->ajouterChamp(new Input("id_email", "email", "", "input", "Votre Email : "));

$f1->ajouterChamp(new Input("id_enregistrer", "action", "enregistrer", "submit"));

// affichage
$f1->afficherEntete();
echo "<table border=\"0\">";

echo "<tr><td>"; 
$f1->collectionChamps["id_nom"]->afficher();
echo "</td><td>";
$f1->collectionChamps["id_prenom"]->afficher();
echo "</td></tr>";

echo "<tr><td colspan=\"2\">"; 
$f1->collectionChamps["id_adresse"]->afficher();
echo "</td></tr>";

echo "<tr><td>"; 
$f1->collectionChamps["id_pseudo"]->afficher();
echo "</td><td>";
$f1->collectionChamps["id_motDePasse"]->afficher();
echo "</td></tr>";

echo "<tr><td>"; 
$f1->collectionChamps["id_newsLetter_oui"]->afficher();
echo "</td><td>";
$f1->collectionChamps["id_email"]->afficher();
echo "</td></tr>";

echo "</table>";
$f1->collectionChamps["id_enregistrer"]->afficher();
$f1->afficherPied();
?>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 avr. 2011, 17:53

@rimie : public final function nomdelaméthode( ... )

finale est obsolète et indique qu'elle ne peut être redéfinie avec un héritage.

dans le cas de l'affectation tu créer le tableau APRÈS l'affectation ça ne peut pas fonctionner ;)

@sadeq : j'ai aussi pensez à deux objets, mais je ne sais pas trop si dans ce cas c'est vraiment "nécessaire" d'utiliser une telle structure et s'il n'y a pas de risque de s’emmêler les pinceaux ? (je pense que le principe de séparer les deux permet de limiter les responsabilités et simplifier le code, serait-ce un bon cas d'utilisation de classe interface ?)


@+
Il en faut peu pour être heureux ......

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

14 avr. 2011, 20:05

T'as raison moogli, je l'avais déjà précisé dans mes premiers messages, ma dernière solution est purement pédagogique s'inscrivant dans le fil de la discussion autours de l'héritage.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 avr. 2011, 20:55

ha j'ai zappé un élément ;)

exemple intéressant merci ;)

@+
Il en faut peu pour être heureux ......

rimie1
Invité n'ayant pas de compte PHPfrance

15 avr. 2011, 03:17

je vais creer la mienne, elle va combiner entre les 2 class ainsi avec d'autres elements et ameliorations

rimie1
Invité n'ayant pas de compte PHPfrance

15 avr. 2011, 06:31

un essai mediocre, pas encore termine:
<?php

class formulaire {
    // Toutes les propriétés du formulaire
    private $formMethod; // array (POST et GET)
    private $method; // POST et GET
	private $action;
	private $name;
    private $value;
    private $type; // text, password, button, submit, radio, checkbox 
    private $id;
    private $class;
    private $size;
    private $maxlength;
    private $cols;
    private $rows;
    //private $inputType;
    //private $error;
    //private $form;
    //private $afterinput;
    


		


######## On construit le formulaire:

public final function __construct($name, $method='', $action='') { // aucun champ n'est obligatoire
			
		// le nom du formulaire:
		$this->name = $name;

		// la methode
		# on liste les differentes methodes
		$this->formMethod = array('POST','GET');
		// on supprime l'espace
		$method = trim($method);
		// si la method est vide on met POST par defaut sinon on la laisse
		$method = (empty($method)) ? 'POST' : $method;
		// si la method remplie ne contient pas le tableau formMethod (post, get) on met a defaut post
		$method = (!in_array($method, $this->formMethod)) ? 'POST' : $method;
		// on  retourne la method
		$this->method = $method;
	
	
		//l'action
        $action = (empty($action)) ? $_SERVER['PHP_SELF'] : $action;
        $this->action = $action;
        // l'entete du formulaire
       	echo '<form name="'.$name.'" method="'.$method.'" action="'.$action.'" >';
       
       }
       
	
	//public final function addInput($name, $type='', $checked='', $size='', $maxlength=''){
	public final function addInput($name, $type='', $checked=''){
       	
       	//echo $type;
		
		$value 		= (empty($value)) 		? 	$name	: $value;
		$id 		= (empty($id)) 			? 	$name 	: $id;
		$class 		= (empty($class)) 		?	$name 	: $class;
		$size		= (empty($rows)) 		? 	20 		: $size;
		$maxlength	= (empty($maxlength)) 	? 	50	 	: $maxlength;
		
		$this->name 	= $name; // nom
		$this->id 		= $id; // id
		$this->class	= $class; // class
		$this->cols		= $size; // size
		$this->rows		= $maxlength; // maxi
		
	switch($type)
	{
		case 'password':
		echo '<input type="'.$type.'" name="'.$name.'" value="'.$value.'" size="'.$size.'" maxlength="'		.$maxlength.'" id="'.$id.'" class="'.$class.'" />';
		break;
		
		case 'submit':
		echo '<input type="'.$type.'" name="'.$name.'" value="'.$value.'" id="'.$id.'" class="'.$class.'" />';
		break;
				
		case 'button':
		echo '<input type="'.$type.'" name="'.$name.'" value="'.$value.'" id="'.$id.'" class="'.$class.'" />';
		break;
		
		case 'radio':		
		if($checked)
		{
		echo '<input type="'.$type.'" name="'.$name.'" value="'.$value.'" id="'.$id.'" class="'.$class.'" '.$checked.' />';	
		}
		else
		{
		echo '<input type="'.$type.'" name="'.$name.'" value="'.$value.'" id="'.$id.'" class="'.$class.'" />';
		}
		break;
				
		case 'checkbox':		
		if($checked)
		{
		echo '<input type="'.$type.'" name="'.$name.'" value="'.$value.'" id="'.$id.'" class="'.$class.'" '.$checked.' />';	
		}
		else
		{
		echo '<input type="'.$type.'" name="'.$name.'" value="'.$value.'" id="'.$id.'" class="'.$class.'" />';
		}
		break;
		
		// par defaut un text
		default:
		echo '<input type="text" name="'.$name.'" value="'.$value.'" size="'.$size.'" maxlength="'.$maxlength.'" id="'.$id.'" class="'.$class.'" />';
				
			}
		$this->type = $type;
       	//$this->inputType = array('text', 'password', 'submit', 'button', 'radio','checkbox');
  		// si le type est vide on met text par defaut sinon on la laisse
		//$type = (empty($text)) ? 'text' : $text;
		// si le type ne contient pas le tableau inputType (text, ...) on le met a defaut text
		//$type = (!in_array($type, $this->inputType)) ? 'text' : $type;
		// on  retourne le type
		} // end addInput function


	#Textarea
	public final function addTextarea($name, $cols='', $rows='', $fillTextarea='', $optionsTextarea=''){
		
		$id 			= (empty($id)) 				? 	$name 		: $id;
		$class 			= (empty($class)) 			?	$name		: $class;
		$fillTextarea	= (empty($fillTextarea)) 	? 	'Du text' 	: $fillTextarea;
		$cols			= (empty($cols)) 			? 	40 			: $cols;
		$rows			= (empty($rows)) 			? 	5 			: $rows;

		$this->name 	= $name; // nom
		$this->id 		= $id; // id
		$this->class	= $class; // class
		$this->cols		= $cols; // cols
		$this->rows		= $rows; // rows
		
		if($optionsTextarea)
		{				
			echo '<textarea name="'.$name.'" cols="'.$cols.'" rows="'.$rows.'" '.$optionsTextarea.'>'.$fillTextarea.'</textarea>';
		}
		else
		{
			echo '<textarea name="'.$name.'" cols="'.$cols.'" rows="'.$rows.'">'.$fillTextarea.'</textarea>';	
		}

	} // end textarea


	#StartSelect
	public final function addStartSelect($name=''){
		
		$id 			= (empty($id)) 				? 	$name 		: $id;
		$class 			= (empty($class)) 			?	$name		: $class;
		//$size			= (empty($size)) 			? 	''			: $size;

		$this->name 	= $name; // nom
		$this->id 		= $id; // id
		$this->class	= $class; // class
		//$this->size		= $size; // size
		//$this->rows		= $rows; // rows
		
				
			echo '<select name="'.$name.'">';

	} // end StartSelect
	
	#Options Select
	public final function addOptionsSelect($fillOption, $value='', $optionOptions=''){
		
		$id 			= (empty($id)) 				? 	$name 				: $id;
		$class 			= (empty($class)) 			?	$name				: $class;
		$value			= (empty($value)) 			? 	0					: $value;
		$fillOption		= (empty($fillOption)) 		? 	'Select from list'	: $fillOption;

		$this->name 	= $name; // nom
		$this->id 		= $id; // id
		$this->class	= $class; // class
		$this->value	= $value; // valeur option
		//$this->rows		= $rows; // rows
		
		
		if($optionOptions)
		{				
			echo '<option value="'.$value.'" DISABLED>'.$fillOption.'</option>';
		}
		else
		{
			echo '<option value="'.$value.'">'.$fillOption.'</option>';	
		}

	} // end Options Select
	

	#EndSelect
	public final function addEndSelect(){
			echo '</select>';

	} // end EndSelect





	// separation des champs
	public function separation()
    {
       echo "<br />";
    }
    
	// terminer le Form
    public function terminer()
    {
       echo "</form>";
    }


}// end class formulaire

$frm1 = new formulaire('monForm1', '', ''); // imprimer l'entête du formulaire (name, method, action)
$frm1->addInput('nom', 'text'); // champ text
//$frm1->addInput('nom', 'text', '10', '80'); // champ text avec modif

$frm1->separation();

$frm1->addInput('nom', 'checkbox', 'Checked="checked"'); // checkbox avec checked
$frm1->addInput('nom', 'checkbox'); // checkbox sans checked

$frm1->separation();

$frm1->addInput('nom', 'radio', 'Checked="checked"'); // radio avec checked
$frm1->addInput('nom', 'radio'); // radio sans checked

$frm1->separation();

$frm1->addTextarea('nom', '', ''); // textarea sans text

$frm1->separation();

$frm1->addTextarea('nom', '20', '3', 'Test ici'); // textarea avec du text

$frm1->separation();

$frm1->addTextarea('nom', '35', '3', 'textarea avec readonly', 'READONLY'); // textarea avec READONLY

$frm1->separation();

$frm1->addStartSelect('select1');
$frm1->addOptionsSelect('','','DISABLED');
$frm1->addOptionsSelect('valeur2', 'option4');
$frm1->addEndSelect();

$frm1->separation();



$frm1->terminer();






?>

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

15 avr. 2011, 11:12

Bravo =D>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

rimie1
Invité n'ayant pas de compte PHPfrance

15 avr. 2011, 13:09

Bravo =D>
Merci, c'est quoi exactement:
private $var;
$this->var = $var;
private $method; // POST et GET

$this->name     = $name; // nom
+ c'est quoi la difference entre: function __construct et function nomDeLaFonction

J'ai essaye de mettre comme ca, et ca ne marche pas
public final function addInput($name, $type='', $checked='', $size='', $maxlength=''){

// code

}

$frm1->addInput('nom', 'text', '10', '80'); // champ text avec modif
Merci

ViPHP
AB
ViPHP | 5818 Messages

15 avr. 2011, 17:37

$var est une variable "standard" dont la portée est interne à la fonction qui l'utilise -> les autres fonctions n'y auront pas accès.
$this->var défini une variable dont la portée est interne à la classe -> toutes les fonctions de la classe pourront y avoir accès.

function __construct est la fonction qui s'exécutera dès l'instanciation de la classe (en utilisant les éventuels paramètres fournis dans de l'instanciation).

rimie1
Invité n'ayant pas de compte PHPfrance

16 avr. 2011, 16:29

$var est une variable "standard" dont la portée est interne à la fonction qui l'utilise -> les autres fonctions n'y auront pas accès.
$this->var défini une variable dont la portée est interne à la classe -> toutes les fonctions de la classe pourront y avoir accès.

function __construct est la fonction qui s'exécutera dès l'instanciation de la classe (en utilisant les éventuels paramètres fournis dans de l'instanciation).
Est ce que vous pouvez me donner un exemple sur:
private $var;
$this->var = $var;
Je les ai supprime, et ce ne change rien.

Est ce que l'utilisation de __construct est la meme que public function()

merci

ViPHP
AB
ViPHP | 5818 Messages

16 avr. 2011, 16:53

Est ce que l'utilisation de __construct est la meme que public function()
merci
Est-ce qu'une fonction publique s'exécute automatiquement lors de l'instanciation de la classe ?