Accueil > Forum > > > > Utilité des :: et classes "imbriquées"
Utilité des :: et classes "imbriquées"
vendredi 4 mai 2007 à 10:46:05 |
Utilité des :: et classes "imbriquées"

codefalse
|
Bonjour à vous tous. Hier soir j'ai un peu tripoté les "::" en php pour savoir à quoi ils servent. J'en ai conclut, d'après mes tentatives, que cela sert à utiliser une classe sans l'instancier. Par exemple, si j'ai class essai { function lol { echo "salut !"; } } et qu'ensuite dans mon code php, je fait essai::lol(); j'aurai "salut !" d'affiché. Est-ce bien l'utilité de ces :: ? Quel est alors la différence entre ces :: et instancier une classe ? quel est le mieux ? Connaissez-vous une url ou je pourrai en apprendre d'avantage sur ces spécificités ? Par ailleur, j'aimerai savoir s'il est possible d'imbriquer des functions je m'explique. j'ai la classe comme avant mais dans la fonction lol, j'ai d'autres fonctions : class essai {
function lol {
function salut() { } function bonjour () { }
}
} je sais que ca marche pas (ou alors j'ai loupé quelque chose), mais j'aimerai avoir une classe ou je puisse bien séparer les éléments, pour faire $essai = new essai(); $essai->lol()->salut(); Dans l'idée, ce serait pour avec par exemple une classe "message", puis avoir une fonction "affirmation", "question", ..., et dans chaques fonctions, de nouvelles fonctions type : (dans "affirmation"), "certain", "sûr", etc de facon à faire message->affirmation()->certain(); J'espere avoir été assez clair :/ Merci de votre aide !
|
|
vendredi 4 mai 2007 à 20:57:30 |
Re : Utilité des :: et classes "imbriquées"

neigedhiver
|
Réponse acceptée !
Salut,
:: s'appelle opérateur de résolution de portée, ou encore Paamayim Nekudotayim (ce qui signifie "Double deux points" en hébreu).
Son utilité est effectivement d'utiliser une méthode d'une classe sans instancier la classe.
Pourquoi faire comme ça ?
Parce que parfois, on peut avoir une méthode d'une classe utile pour ceci ou cela, et uniquement pour ceci ou cela, pas autre chose. Alors, on peut utiliser l'opérateur de résolution de portée (j'utiliserai :: maintenant, c'est quand même plus court).
Par ailleurs, :: est aussi utilisé dans certains cas en POO que je ne saurais pas bien détailler.
Il sert par exemple à instancier un singleton.
L'intérêt diu singleton réside dans le fait qu'il n'est pas instanciable par lui-même (sinon, ce ne serait plus un singleton, puisqu'on pourrait créer autant d'objets de la classe en question). Il faut, pour instancier un singleton, une classe qui va contrôler si le singleton a déjà été instancié ou non. Si ce n'est pas le cas, elle va instancier un nouvel objet et le retourner.
Si le singleton a déjà été instancié, elle retourne l'objet déjà instancié.
Un petit exemple qui m'avait permis de comprendre... http://qwix.media-box.net/index.php/2004/09/29/24-LeSingletonEnPhp5
Sinon, d'une manière générale, si tu as besoin de tout ce qu'offre un objet php5, que l'objet "vit" en quelque sorte alors instancie l'objet.
Si tu n'as besoin occasionnellement que d'une fonction, alors utilise ::
Il faut bien comprendre quand même que si la méthode en question ne doit être appelée que via :: ... Elle n'a pas lieu d'être définie en tant que méthode de l'objet, puisqu'elle ne peut pas utiliser les propriétés (variables) de la classe.
Pour ce qui est de l'imbrication de fonctions, c'est possible.
Comme il ne sert à rien d'inventer un nouvel exemple, autant reprendre celui de la doc de php :
Source : http://ch2.php.net/manual/fr/language.functions.php (exemple 17.3)
Par contre, si tu dis que ça ne marche pas, c'est que tu as du n'essayer qu'avec une classe.
Ce que tu veux faire ce fait ainsi :
class essai
{
public $lol;
__construct()
{
$this -> lol = new lol;
}
}
class lol
{
function mdr()
{
echo 'mdr';
}
}
$essai -> lol -> mdr();
Affichera :
mdr
Ce que tu veux, c'est assigner un objet à une variable, en l'occurrence, une propriété d'un autre objet.
est-ce que c'est assez clair ?
|
|
vendredi 4 mai 2007 à 21:00:49 |
Re : Utilité des :: et classes "imbriquées"

neigedhiver
|
Mince, on peut pas éditer...
Correction... dans la fonction __construct de la classe essai, la syntaxe correcte est
$this -> lol = new lol();
|
|
dimanche 6 mai 2007 à 08:09:18 |
Re : Utilité des :: et classes "imbriquées"

malalam
|
Hello,
la classe lol n'ayant pas de constructeur, $this -> lol = new lol; est correct :-)
|
|
dimanche 6 mai 2007 à 09:34:52 |
Re : Utilité des :: et classes "imbriquées"

neigedhiver
|
Hello,
Ah ben merci de la précision. M'enfin, ça perturbe mes noeils, même le dimanche matin au lever du lit.
|
|
mardi 8 mai 2007 à 10:29:17 |
Re : Utilité des :: et classes "imbriquées"

codefalse
|
merci beaucoup pour ces réponses très bien détaillé ! ca fait plaisir de savoir qu'il y a des gens comme toi qui prennent autant de temps à répondre, avec autant de détails, précisions et exemples ! :)
merci beaucoup !! :)
|
|
mardi 8 mai 2007 à 17:37:20 |
Re : Utilité des :: et classes "imbriquées"

neigedhiver
|
Salut,
Quand les questions sont pertinentes et détaillées, et montrent que la personne a cherché, essayé et que malgré cela elle a encore quelques doutes/questions ou manque de précisions sur certains détails, c'est un réel plaisir que de répondre avec moult détails (comment j'me la pète avec ma phrase de 3km...)
|
|
Cette discussion est classée dans : function, classe, essai, lol, utilité
Répondre à ce message
Sujets en rapport avec ce message
Utilisation d'une méthode avec pour parametre un objet [ par aguiran ]
Salut, Mon pb ressemble un peu à celui posé par Mandark le 11/02, mais je ne souhaite pour ma part, pas ré-instancier un objet dans dans une autre cl
function_exists mais dans une classe [ par cedriclomb ]
Bonjour,je cherche une fonction pour tester si une fonction existe mais dans une class exempleif(function_in_class($this->{$act}->getPage()){ retu
inclusion d'une classe provenant d'un autre fichier [ par lilippx ]
salut, je me suis mis au php ce matin mais je bute sur un petit truc (dès le premier jour, ce n'est pas motivant...)je n'arrive pas à instancier un ob
Classe Connexion.php la plus simple possible .... [ par Tartuffe245 ]
Bonjour à tous,J'ai créé une classe connexion pour mon site internet et il se trouve que j'ai une erreur qui revient souvent mais je ne sais pas comme
J'aurai besoin d'un peut d'aide svp [ par Underskill ]
Bonsoir J'aurais besoin d'aide. Je n'arrive pas afficher les fonction correctement pour afficher le script esceque vous pouriez m'aider svp Le script
Utiliser une fonction membre de la classe comme callback [ par Evangun ]
Bonjour,je n'arrive pas à spécifier une méthode de la classe courante comme fonction de callback.J'ai tenté plusieurs déclarations sans succès (je sui
Appel d'une classe dans une classe [ par qntoinOo ]
Bonjour à tous,Je suis face à un petit problème, je fait appel dans mon site à plusieurs classes une pour mes requêtes mysql, une pour mon système de
POO php5 classe abstraite et méthode static [ par dorian91 ]
Bonjour à tous,J'ai une petite question pour vous. Je vais vous écrire le code et vous expliquer mon problèmeclass Test1 extends Test2{}abstract class
fonction fsockopen [ par chevallier37 ]
bonjour , je viens de configurer ( presque ) un serveur dédié sous debian etch , apache2, php5 , je souhaite utiliser la fonction fsockopen mais voilà
Aide sur API Google nxgooglemapsapi.php [ par koestel ]
Bonjour,J'utilise la classe ''nxgooglemapsapi.php" pour mieux gèrer l'api google pour une applicationcela fonctionne mais j'aimerai pouvoir :Rajouter
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|