Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1376 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP5] probleme interface

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP5] probleme interface

n°1486402
the_bigboo
Posté le 05-12-2006 à 00:43:23  profilanswer
 

Bonsoir :)
Travaillant sur un projet d'assez grande ampleur et comportant de tres nombreux objet , je dois si je veux maintenir une qualité de code correcte implémenter des interfaces a chacun de mes objets.
 
Voici ci-dessous une interface que j'ai créé :

Code :
  1. interface admin_content {
  2. private function _Header();
  3. private function _Footer();
  4. public function getHtml();
  5. public function setParent(&$AdminObject);
  6. }


le probleme , c'est que quand je l'implémente j'obtiens l'erreur suivante :

Code :
  1. Fatal error: Access type for interface method admin_content::_Header() must be omitted in /var/www/www/V2/php5_libs/config.inc.php on line 47


 
Je ne comprends pas vraiment cette erreur... Une idée ?
 
Nb : je suis en PHP 5.2

mood
Publicité
Posté le 05-12-2006 à 00:43:23  profilanswer
 

n°1486417
naceroth
Posté le 05-12-2006 à 02:15:03  profilanswer
 

C'est juste que toutes les méthodes d'une interface doivent être déclarées public :)

n°1486442
the_bigboo
Posté le 05-12-2006 à 08:21:20  profilanswer
 

C'est très embettant ca !!!!

n°1486503
FlorentG
Unité de Masse
Posté le 05-12-2006 à 10:34:03  profilanswer
 

En même temps, faut pas vouloir interfacer tout et n'importe quoi :/

n°1486508
FlorentG
Unité de Masse
Posté le 05-12-2006 à 10:36:41  profilanswer
 

the_bigboo a écrit :

C'est très embettant ca !!!!


Bah non, c'est logique, à quoi ça sert de définir une méthode privée dans une interface ? La classe qui l'implémente ne sera pas obligée de l'utiliser [:petrus dei]
 
Genre ta fonction privée _Header() (d'ailleurs vire l'underscore, c'est moche :D), si une classe l'implémente, qu'est-ce qui oblige la classe à l'utiliser ? Peut-être d'ailleurs qu'elle ne sera même pas pratique au final...

n°1486540
lebayou
Posté le 05-12-2006 à 11:29:38  profilanswer
 

Tu peux la rendre protected au lieu de private et ca devrait marcher !
 
Pour info :  
 
Private rend privé ta fonction pour la classe uniquement
 
Protected rend privé ta fonction pour la classe et ses classes héritières!
 
Et public rend la fonction public pour tout le monde!

n°1486583
the_bigboo
Posté le 05-12-2006 à 12:53:05  profilanswer
 

lebayou a écrit :

Tu peux la rendre protected au lieu de private et ca devrait marcher !


Non car ce n'est pas dans le cadre d'une extension de classe ;)
Interfacer pour tout et n'importe quoi , surement pas, C'esy juste que ca permet je trouve d'avoir un code homogene et dans la mesure que tous les objets que je créé sont en quelques sorte des modules il est plus intéressants qu'ils soient dévelloppés dans un modele commun et ce que ca soit en méthodes publique ou privées...

n°1486586
FlorentG
Unité de Masse
Posté le 05-12-2006 à 12:56:53  profilanswer
 

Si la méthode est privée, elle ne servira qu'à la classe. Et donc est parfaitement inutile dans une interface qui est censé représenté la structure publique d'une classe. Comme dit, vu qu'il n'y a évidemment aucune implémentation dans l'interface (au contraire d'une classe abstraite), ça sert à rien des trucs privés.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP5] probleme interface

 

Sujets relatifs
Problème de copier coller sous vba:comment réduire la taille de la sél[C# .net] Créer des webcontrol dynamiquement => probleme avec les ID
[ASP.NET C#] Problème de DLL dans un site webProbleme General "Rechercher Suivant"
XML : interface entre applis et SGBD ?[résolu] Probleme avec les sessions
Problème de Queue FIFOProbleme perte de donnée avec Mysql
problème d'opération arithmétiqueProblème de référence avec une page d'accueil
Plus de sujets relatifs à : [PHP5] probleme interface


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR