5 votes

Oubliez la liaison statique tardive, j'ai besoin de la __FILE__ statique tardive.

Je cherche le get_called_class() équivalent pour __FILE__ ... Peut-être quelque chose comme get_included_file() ?

J'ai un ensemble de classes qui aimeraient savoir dans quel répertoire elles existent. 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 classe étendue, mais cela semble un peu... ghetto. Après tout, nous parlons de PHP 5.3, non ? N'est-ce pas censé être le futur ?

Existe-t-il un autre moyen d'obtenir le chemin vers le fichier où une classe a été déclarée ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X