Se si tenta di utilizzare class_exists() all'interno di un metodo di una classe in PHP, è necessario specificare il nome completo della classe - lo spazio dei nomi corrente non viene rispettato. Per esempio, se la mia classe è:Esiste un'alternativa al namespace rispetto a class_exists() di PHP?
<?
namespace Foo;
class Bar{
public function doesBooClassExist(){
return class_exists('Boo');
}
}
e fischiano è una classe (che carica automaticamente correttamente) e si presenta così
namespace Foo;
class Boo{
// stuff in here
}
se provo:
$bar = new Bar();
$success = $bar->doesBooClassExist();
var_dump($success);
si otterrà un falso ... c'è un modo alternativo per farlo senza dover specificare esplicitamente il nome completo della classe (es. class_exits('Foo\Boo')
)?
Hai provato ad anteporre il nome della classe con '__NAMESPACE__' nel metodo' doesBooClassExist() '? O sto fraintendendo quello che stai cercando di fare? (vedi http://www.php.net/manual/en/language.namespaces.nsconstants.php) – Crontab
@Crontab Questo potrebbe essere fatto come si indica se non c'è un altro modo che sia già a conoscenza dello spazio dei nomi - solo una preferenza personale . Dovresti fare una risposta. – Ray
Non sono sicuro, ma penso che sia corretto per il class_exists cercare non nello spazio dei nomi. Se controlla direttamente nello spazio dei nomi, come sarà possibile controllare la classe al di fuori di qualsiasi spazio dei nomi dall'interno? – Svetoslav