2010-04-09 2 views
1

En se référant à cette question: https://stackoverflow.com/questions/2035449/why-is-oop-hard-for-me

class Form 
{ 
    protected $inputs = array(); 
    public function makeInput($type, $name) 
    { 
     echo '<input type="'.$type.'" name="'.$name.'">'; 
    } 

    public function addInput($type, $name) 
    { 
     $this->inputs[] = array("type" => $type, 
       "name" => $name); 
    } 

    public function run() 
    { 
     foreach($this->inputs as $array) 
     { 
      $this->makeInput($array['type'], $array['name']; 
     } 
    } 
} 

$form = new form(); 

$this->addInput("text", "username"); 
$this->addInput("text", "password");** 

Puis-je obtenir une meilleure explication de ce que l'$this->input[] fait dans cette partie:

public function addInput($type, $name) 
     { 
      $this->inputs[] = array("type" => $type, 
        "name" => $name); 
     } 

Répondre

2

Il accède à cette variable pour cette instance de la classe/de l'objet. Supposons que vous créez une nouvelle instance de la classe en écrivant $something = new Form();. Maintenant, lorsque vous utilisez une fonction dans la classe en l'appelant avec $ something-> functionname(); la fonction réfèrera à l'instance $ quelque chose quand elle le dit. La grande chose avec des objets comme celui-ci est que les fonctions peuvent accéder les uns aux autres varibles.

+0

Je pense que je comprends, mais pourquoi puis-je simplement appeler la fonction comme 'functionname()'? Pourquoi dois-je utiliser la référence la référence à l'instance? – Strawberry

+0

Parce que toutes les fonctions de la classe fonctionnent ensemble. J'ai obtenu le mien plutôt avancé de la classe avec un support de validation, etc. et là je profite vraiment des varibles qui sont accessibles par toutes les fonctions de la classe. C'est beaucoup moins compliqué, je peux écrire $ form-> Validate(); et il retournera true si le formulaire valide toutes les règles que j'ai configurées avec $ form-> Rule() sans passer de varible à Validate. Vous pouvez également avoir plusieurs instances de l'objet avec des données différentes qui peuvent être utiles. – Hultner

1

Comme défini vers le haut de la classe, $this->inputs est un tableau. En PHP, vous ajoutez à un tableau en mettant [] après le nom du tableau et en lui affectant. Donc, il est ajouté à $this->inputs.

-1

$this->inputs = new array() définit la variable inputs dans l'objet actuel.

0
$this->inputs[] = array("type" => $type, "name" => $name); 

places à la fin d'un tableau $ this-> Enrichir élément qui est lui-même un tableau avec deux éléments l'un avec l'indice « type » et d'autres avec l'index « name »)

Indice de la valeur ajoutée element est l'indice numérique le plus élevé du tableau $ this-> input présent jusqu'ici plus un. $

$ ceci est un objet de la classe Form et inputs est un champ protégé de cet objet qui devient un tableau vide lorsque l'objet est créé.

Questions connexes