Difference entre __constructor et _construct
Résolu/Fermé
Profil bloqué
-
15 août 2010 à 13:29
Crillus Messages postés 192 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 22 novembre 2013 - 16 août 2010 à 13:12
Crillus Messages postés 192 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 22 novembre 2013 - 16 août 2010 à 13:12
A voir également:
- Difference entre __constructor et _construct
- Différence entre tcp et udp - Guide
- Difference entre million et milliard - Accueil - Technologies
- Différence entre streaming et replay - Guide
- Différence entre gb et go ✓ - Forum Matériel & Système
- Difference entre followers et suivi - Forum Twitter
8 réponses
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
15 août 2010 à 15:32
15 août 2010 à 15:32
Salut.
Ça ne serait pas plutôt l'inverse ?
__construct et _constructor ?
De toutes façons, il n'y a que deux constructeur : __construct() et NomDeLaClasse()
Ça ne serait pas plutôt l'inverse ?
__construct et _constructor ?
De toutes façons, il n'y a que deux constructeur : __construct() et NomDeLaClasse()
Crillus
Messages postés
192
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
22 novembre 2013
563
15 août 2010 à 16:43
15 août 2010 à 16:43
alors...
la fonction __constructor() est le constructeur par défaut d'une classe, elle est prédéfinie mais n'apporte rien de plus que le constructeur par défaut que l'on écrirait NomDeMaClasse().
donc si tu veux t'en servir tu peux faire
public function __constructor()
{
// traitement de constructeur comme si
// la fonction s'appelait NomDeMaClasse()
}
Et si le système a des erreurs de PHP (syntaxe, allocation mémoire, autre...) tu les verras s'afficher.
cette fonction __constructor() a été intégrée dans PHP5 et permet de faire un vrai constructeur par défaut avec un traitement d'erreurs adapté.
Quand cette fonction comporte des paramètres -comme ton $post par exemple- on parle de constructeur normal.
quant à _constructor() avec un seul _, il doit s'agir d'une faute d'orthographe, car ce n'est pas une fonction prédéfinie.
la fonction __constructor() est le constructeur par défaut d'une classe, elle est prédéfinie mais n'apporte rien de plus que le constructeur par défaut que l'on écrirait NomDeMaClasse().
donc si tu veux t'en servir tu peux faire
public function __constructor()
{
// traitement de constructeur comme si
// la fonction s'appelait NomDeMaClasse()
}
Et si le système a des erreurs de PHP (syntaxe, allocation mémoire, autre...) tu les verras s'afficher.
cette fonction __constructor() a été intégrée dans PHP5 et permet de faire un vrai constructeur par défaut avec un traitement d'erreurs adapté.
Quand cette fonction comporte des paramètres -comme ton $post par exemple- on parle de constructeur normal.
quant à _constructor() avec un seul _, il doit s'agir d'une faute d'orthographe, car ce n'est pas une fonction prédéfinie.
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
Modifié par avion-f16 le 15/08/2010 à 18:30
Modifié par avion-f16 le 15/08/2010 à 18:30
C'est __construct et pas __constructor le constructeur par défaut.
https://www.php.net/manual/fr/language.oop5.decon.php
__constructor sera considéré comme n'importe quelle autre méthode, donc elle ne sera pas appelée à la création de l'objet (ligne avec le mot-clé "new").
Si tu décommentes l'avant dernière ligne, tu verras les deux textes s'afficher.
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
https://www.php.net/manual/fr/language.oop5.decon.php
__constructor sera considéré comme n'importe quelle autre méthode, donc elle ne sera pas appelée à la création de l'objet (ligne avec le mot-clé "new").
<?php class MaClasse() { function __construct() { echo "L'objet a bien été créé.<br/>\n" . "Ce message s'affiche grâce à __construct<br/><br/>\n"; } function __constructor() { echo "L'objet a bien été créé.<br/>\n" . "Ce message s'affiche grâce à __constructor<br/><br/>\n"; } } $objet = new MaClasse(); // $objet->__constructor(); ?>Ce code n'affichera que ça :
L'objet a bien été créé. Ce message s'affiche grâce à __construct
Si tu décommentes l'avant dernière ligne, tu verras les deux textes s'afficher.
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
Crillus
Messages postés
192
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
22 novembre 2013
563
16 août 2010 à 13:12
16 août 2010 à 13:12
Et je m'excuse pour mon erreur avec la fonction __construct() , je fait souvent l'erreur moi-même quand j'écris ><
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour ta reponse.
J'ai bien verifié la classe. C'est ce que j'ai marqué.
public function __constructor($post)
En utilisant google j'ai vu ce constructeur chez certains anglophones, mais aucune documentation !!!
En plus ça compile nickel par contre si on le remplace par "__construct" ça genère des erreurs ce qui veut dire qu'ils sont pas pareil.
J'ai bien verifié la classe. C'est ce que j'ai marqué.
public function __constructor($post)
En utilisant google j'ai vu ce constructeur chez certains anglophones, mais aucune documentation !!!
En plus ça compile nickel par contre si on le remplace par "__construct" ça genère des erreurs ce qui veut dire qu'ils sont pas pareil.
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
15 août 2010 à 16:37
15 août 2010 à 16:37
L'auteur du code appelle sans doute la méthode __constructor manuellement :
La méthode __construct est automatiquement appelée lors de l'instantiation de l'objet.
$object = new Classe(); $object->__constructor($param1, $param2, ...);
La méthode __construct est automatiquement appelée lors de l'instantiation de l'objet.
Merci à toi Crillus. Ta reponse est claire, j'ai tout compris.
Donc comme constructeur par defaut on a le choix entre :
__constructor() , __construct()
si j'ai bien compris ils sont totalement identiques ?
Pour quoi le fait de remplacer l'un par l'autre ne donne pas le même resultat ?
Encore merci :))
Donc comme constructeur par defaut on a le choix entre :
__constructor() , __construct()
si j'ai bien compris ils sont totalement identiques ?
Pour quoi le fait de remplacer l'un par l'autre ne donne pas le même resultat ?
Encore merci :))