Je cherche le get_called_class()
équivalent pour __FILE__
... Peut-être quelque chose comme get_included_file()
?Oubliez la liaison statique tardive, j'ai besoin de retard statique __FILE__
J'ai un ensemble de classes qui aimeraient savoir ce répertoire qu'ils existent dans quelque chose comme ceci:.
<?php
class A {
protected $baseDir;
public function __construct() {
$this->baseDir = dirname(__FILE__);
}
public function getBaseDir() {
return $this->baseDir;
}
}
?>
Et dans un autre fichier, dans un autre dossier ...
<?php
class B extends A {
// ...
}
class C extends B {
// ...
}
$a = new A;
echo $a->getBaseDir();
$b = new B;
echo $b->getBaseDir();
$c = new C;
echo $c->getBaseDir();
// Annnd... all three return the same base directory.
?>
Maintenant, je pourrais faire quelque chose de ghetto, comme ajouter $this->baseDir = dirname(__FILE__)
à chaque extension de classe, mais cela semble un peu ... ghetto. Après tout, nous parlons de PHP 5.3, n'est-ce pas? N'est-ce pas censé être le futur?
Existe-t-il un autre moyen d'obtenir le chemin d'accès au fichier où une classe a été déclarée?
Je pense que la seule façon est le « ghetto », mais pourquoi fais-tu cela, peut-être il y a un autre approche du problème? – Josiah
@Josiah Ceci est pour la couche vue d'une application. Chaque objet de vue (généralement) consiste en une classe de vue et un fichier de modèle de vue. Dans l'exemple ci-dessus A, B et C sont des classes d'affichage. Chacun aurait, dans son répertoire parent, un fichier de modèle correspondant. Ce serait génial de définir ce répertoire une fois, cependant, au lieu de chaque fois ... – bobthecow