Bonjour,
je suis le tuto sur la POO et j’avais quelques questions' dans l’imédia une !
sur cette video a 23mn04s
pourquoi ne pas fair plustot
class Article{
public $url;
public function getURL(){
$this->url = 'index.php?p=article&id='.$this->id;
}
}
Merci de vos conseils
Ca revient au même au final, vu que pour avoir le résultat tu devrais faire un
return $this->url
Donc.. ^^
// Tu ferais ceci
class Article
{
public $url;
public function getURL()
{
$this->url = 'index.php?p=article&id=' . $this->id;
return $this->url;
}
}
// à la place de celà ?
class Article
{
public function getURL()
{
return 'index.php?p=article&id=' . $this->id;
}
}
// Pourquoi ? Tu fais la concaténation à chaque fois de toute façon.
exatement Forever
de cette facon je l'appelerais
$post->getURL
// plustot que
$post->getURL()
mais après peut être qu'il y a une raison d'appel une "fonction" plustôt qu'une variable.
comme ca le getURL ce retrouve en plus dans l'instance lors d'un var_dump et on ce rend mieux compte des possibilité d'info que l'on peut écrire.
$post->getURL
// te retournera une erreur parce que l'objet n'a pas de propriété qui s'appelle `getURL`, c'est `url`
Dans mon premier exemple, il faudra faire un $post->getURL()
avant de pouvoir faire $post->url
parce que url
n'est set à rien (null
).
Bref, le plus simple : utiliser une méthode.
Ce que tu peux faire si tu souhaites utiliser la syntaxe $post->url
et $post->url = 'foo'
est d'utiliser les méthodes magiques __get
et __set
pour appeller les méthodes getX
et setX
quand x
est appelé.
Merci pour le presition Virax
Pradon Forever je voulais dire
$post->url
// plustot que
$post->getURL()
En fait ce que je voie c’est que si je fait un var_dump($post) je n’ai pas url dedans et si ca fait un moment que je n’ai pas toucher au code je peut avoir oublier les données au quel je m’etais donnée accée.
avec
public $url;
public function getURL(){
$this->url = 'index.php?p=article&id=' . $this->id;
return $this->url;
}
la je me rend compte que le var_dump($post) m’affiche bien url (et donc tout les donnée diponible sans aller chercher dans les class ce que je pourais avoir crée comme getters).
je ne connais pas encore les methodes magic ...
apres c’est peut etre une conneri et que la je ne me rend pas encore compte, et que je regraiterai plus tard d’avoir de vrais getters.
haaa ba pardon, il en parle dans la suite du tuto des methode magic !!
pour finir j’ait fait ceci
<?php
class membres {
public $url ;
public function __construct(){
$this->url = $this->getUrl() ;
}
public function getURL(){
return ROOT . '/membres-'.$this->id.'/'.$this->nom.'-'.$this->prenom;
}
}
si ca fait un moment que je n’ai pas toucher au code je peut avoir oublier les données au quel je m’etais donnée accée
Les commentaires sont là pour ça. Les docblocks en particulier (il me semble que Graf' en parle dans ce tuto).