Faire fonctionner la méthode dans la classe Pare pas de classe d'enfants non

  • benwade9721
  • Novice
  • Novice
  • Avatar de l’utilisateur
  • Inscription: Jan 20, 2009
  • Messages: 17
  • Status: Offline

Message Juillet 6th, 2010, 1:47 am

Salut tout le monde,

J'essaie de créer une classe en PHP qui va être transmis...
La classe contient un constructeur que j'ai besoin de faire appel à deux classes, mais j'ai besoin d'un moyen d'exécuter uniquement une partie de la construction une fois, c'est à dire courir dans le parc mais pas ne pas s'exécuter lorsque la classe est prolongée par un enfant de classe...??

Code: [ Select ]
<?
class Parent_Class
{
    function __construct()
    {
        if([color=#FF0000]this is parent class[/color])
        {
            echo 'This is echoed from the parent class, and not echoed when this class is extended by another class';
        }
    }
}

class Child_Class extends Parent_Class
{
    function __construct()
    {
        parent::__construct();
    }
}


?>
  1. <?
  2. class Parent_Class
  3. {
  4.     function __construct()
  5.     {
  6.         if([color=#FF0000]this is parent class[/color])
  7.         {
  8.             echo 'This is echoed from the parent class, and not echoed when this class is extended by another class';
  9.         }
  10.     }
  11. }
  12. class Child_Class extends Parent_Class
  13. {
  14.     function __construct()
  15.     {
  16.         parent::__construct();
  17.     }
  18. }
  19. ?>


Quelqu'un at-il des idées?
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Juillet 6th, 2010, 1:47 am

  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Mar 12, 2007
  • Messages: 6228
  • Loc: South-Africa
  • Status: Offline

Message Juillet 7th, 2010, 12:16 am

benwade9721 a écrit:
Salut tout le monde,

J'essaie de créer une classe en PHP qui va être transmis...
La classe contient un constructeur que j'ai besoin de faire appel à deux classes, mais j'ai besoin d'un moyen d'exécuter uniquement une partie de la construction une fois, c'est à dire courir dans le parc mais pas ne pas s'exécuter lorsque la classe est prolongée par un enfant de classe...??

Code: [ Select ]
<?
class Parent_Class
{
    function __construct()
    {
        if([color=#FF0000]this is parent class[/color])
        {
            echo 'This is echoed from the parent class, and not echoed when this class is extended by another class';
        }
    }
}

class Child_Class extends Parent_Class
{
    function __construct()
    {
        parent::__construct();
    }
}


?>
  1. <?
  2. class Parent_Class
  3. {
  4.     function __construct()
  5.     {
  6.         if([color=#FF0000]this is parent class[/color])
  7.         {
  8.             echo 'This is echoed from the parent class, and not echoed when this class is extended by another class';
  9.         }
  10.     }
  11. }
  12. class Child_Class extends Parent_Class
  13. {
  14.     function __construct()
  15.     {
  16.         parent::__construct();
  17.     }
  18. }
  19. ?>


Quelqu'un at-il des idées?

Peut-être quelque chose comme ceci:

Code: [ Select ]
<?
class Parent_Class
{
    function __construct($child = false)
    {
        if($child == false)
        {
            echo 'This is echoed from the parent class, and not echoed when this class is extended by another class';
        }
    }
}

class Child_Class extends Parent_Class
{
    function __construct()
    {
        parent::__construct(true);
    }
}


?>
  1. <?
  2. class Parent_Class
  3. {
  4.     function __construct($child = false)
  5.     {
  6.         if($child == false)
  7.         {
  8.             echo 'This is echoed from the parent class, and not echoed when this class is extended by another class';
  9.         }
  10.     }
  11. }
  12. class Child_Class extends Parent_Class
  13. {
  14.     function __construct()
  15.     {
  16.         parent::__construct(true);
  17.     }
  18. }
  19. ?>
Let's leave all our *plum* where it is and go live in the jungle ...
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Juillet 7th, 2010, 11:17 am

Si vous voulez quelque chose conditionnelle flexible, Id probablement aller avec ce que RT posté. Si vous souhaitez simplement pour empêcher l'extension des classes d'appeler le constructeur de base des classes, theres présent.

PHP Code: [ Select ]
<?php
 
class base
{
   public function __construct()
   {
      if(get_class($this) != __CLASS__) return;
 
      echo 'base::__construct()<br>', PHP_EOL;
   }
}
 
class extension extends base
{
   public function __construct()
   {
      echo 'extension::__construct()<br>', PHP_EOL;
      parent::__construct();
   }
}
 
$obj = new base();
echo '<hr>', PHP_EOL;
$obj = new extension();
 
?>
  1. <?php
  2.  
  3. class base
  4. {
  5.    public function __construct()
  6.    {
  7.       if(get_class($this) != __CLASS__) return;
  8.  
  9.       echo 'base::__construct()<br>', PHP_EOL;
  10.    }
  11. }
  12.  
  13. class extension extends base
  14. {
  15.    public function __construct()
  16.    {
  17.       echo 'extension::__construct()<br>', PHP_EOL;
  18.       parent::__construct();
  19.    }
  20. }
  21.  
  22. $obj = new base();
  23. echo '<hr>', PHP_EOL;
  24. $obj = new extension();
  25.  
  26. ?>


Commentez la ligne suivante si vous voulez voir les deux constructeurs appelé la façon dont il travaille habituellement.

PHP Code: [ Select ]
if(get_class($this) != __CLASS__) return;
Strong with this one, the sudo is.
  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Mai 21, 2004
  • Messages: 3229
  • Loc: South Africa
  • Status: Offline

Message Octobre 9th, 2010, 9:49 am

Qu'est-ce que vous pourriez aussi envisager de le faire consiste à supprimer le code d'initialisation du constructeur et en utilisant une usine? De cette façon, vous donne beaucoup plus de contrôle sur la construction de la classe au lieu de l'avoir cousu dans le cas else
Watch me grow

Afficher de l'information

  • Total des messages de ce sujet: 4 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 181 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC