Question

Je peux actuellement faire ce qui suit:

class SubClass extends SuperClass {
  function __construct() {
    parent::__construct();
  }
}

class SuperClass {
  function __construct() {
    // this echoes "I'm SubClass and I'm extending SuperClass"
    echo 'I\'m '.get_class($this).' and I\'m extending '.__CLASS__;
  }
}

Je voudrais faire quelque chose de similaire avec les noms de fichiers ( __ FILE __ , mais évalué dynamiquement); Je voudrais savoir dans quel fichier la sous-classe réside, à partir de la super-classe. Est-ce possible d'une manière élégante?

Je sais que vous pouvez faire quelque chose avec get_included_files () , mais ce n'est pas très efficace, surtout si j'ai de nombreuses instances.

Était-ce utile?

La solution

Vous pouvez utiliser la réflexion.

$ref = new ReflectionObject($this);
$ref->getFileName(); // return the file where the object's class was declared

Autres conseils

Euh, pas vraiment, je peux penser à. Chaque sous-classe doit avoir une méthode implémentée explicitement qui renvoie __ FILE __ , ce qui annule complètement le point d'héritage.

Je suis aussi vraiment curieux de savoir pourquoi une telle chose serait utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top