Administrateur PHPfrance |
13231 Messages
31 mars 2010, 10:46
Toujours aussi pédagogue stealth35
imaginons le code suivant :
class A
{
public function foobar()
{
$db = new DB();
$this->db = $db
}
}
jusque là, rien de choquant, non ?
$this->db contient une instance de la classe DB().
Maintenant, regardons le code suivant :
$db = new DB();
$db->query('...');
Toujours rien de choquant, vrai ?
On exécute la méthode query() sur l'objet $db, qui est une instance de la classe DB().
Tu es donc d'accord qu'il est possible d'exécuter des méthodes de la classe DB() sur une instance de cette classe ?
Donc, maintenant, le code suivant :
class A
{
public function foobar()
{
$db = new DB();
$this->db = $db;
$this->db->query('...');
}
}
Le code est toujours correct, puisqu'il exécute la méthode query() sur une instance de la classe DB(), qui est stockée dans un attribut de la classe A.
Et maintenant, pour finir, le code suivant :
class A
{
public function __construct()
{
$this->db = new DB();
}
public function foobar()
{
$this->db->query('...');
}
}
Dans le code suivant, dès que l'on va instancier la classe A (new A()), on va créer une instance de la classe DB() qui sera stockée dans un attribut de la classe.
Ensuite, lorsque l'on va exécuter la méthode $A->foobar(), on va utiliser cette instance de DB() pour lui faire exécuter une méthode.
Est-ce que cette explication est plus claire ?