Domanda

Attualmente posso fare quanto segue:

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__;
  }
}

Vorrei fare qualcosa di simile con i nomi dei file ( __FILE__ , ma valutato dinamicamente); Vorrei sapere in quale file risiede la sottoclasse, dalla superclasse. È possibile in qualche modo elegante?

So che potresti fare qualcosa con get_included_files () , ma non è molto efficiente, soprattutto se ho numerosi casi.

È stato utile?

Soluzione

Puoi usare Reflection.

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

Altri suggerimenti

Uh, non proprio, a cui riesco a pensare. Ogni sottoclasse dovrebbe avere un metodo esplicitamente implementato che restituisca __FILE__ , che in primo luogo sconfigge completamente il punto di eredità.

Sono anche molto curioso di sapere perché qualcosa di simile sarebbe utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top