web-dev-qa-db-fra.com

Utiliser l'espace de noms php dans la fonction

J'obtiens une erreur d'analyse lorsque j'essaie d'utiliser un espace de nom dans ma propre fonction

require('/var/load.php');

function go(){

  use test\Class;

    $go = 'ok';
    return $go;
}

    echo go();
35
westnblue

De règles de portée pour l'importation

Le mot-clé use doit être déclaré dans la portée la plus externe d'un fichier (la portée globale) ou dans les déclarations d'espace de noms. Cela est dû au fait que l'importation est effectuée au moment de la compilation et non à l'exécution, donc elle ne peut pas être étendue au bloc

Donc, vous devriez mettre comme ça, l'utilisation doit être spécifiée au niveau global

require('/var/load.php');
use test\Class;

function go(){
    $go = 'ok';
    return $go;
}
echo go();

Vérifiez l'exemple 5 dans le manuel ci-dessous Veuillez vous référer à son manuel à http://php.net/manual/en/language.namespaces.importing.php

54
Nishant

De le manuel :

Le mot clé use doit être déclaré dans la portée la plus externe d'un fichier (la portée globale) ou dans les déclarations d'espace de noms.

4
lonesomeday