2012-12-13 1 views
1

J'ai récemment rencontré des problèmes assez drôles avec PHP. Je suis en train de créer une fermeture en PHP et l'assigner à une variable statique ne doit donc être défini une fois ...Problèmes de mots-clés statiques PHP et de create_function

static $hasParent = create_function('$category, $parent_id', <<<'FUNC' 
     ...code... 
FUNC 
); 

Cependant, il me dit unexpected '(', expecting ',' or ';'. Est-ce une "fonctionnalité" PHP (lire un bug), ou est-ce que je fais quelque chose de mal?

Répondre

3

Remarque:

Les variables statiques peuvent être déclarées comme on le voit dans les exemples ci-dessus. Essayer pour affecter des valeurs à ces variables qui sont le résultat de expressions entraînera une erreur d'analyse.

ref: http://php.net/manual/language.variables.scope.php#language.variables.scope.static


donc, pas ok:

function foo() { 
    static $bar = function() { 
    echo 'bar'; 
    }; 

    echo 'foo', $bar(); 
} 

foo(); 

ok:

function foo() { 
    static $bar = null; 
    if ($bar === null) { 
    $bar = function() { 
     echo 'bar'; 
    }; 
    } 

    echo 'foo', $bar(); 
} 

foo(); 
+0

Merci Yoshi, le bit qui était m'avait j'essayais d'assigner ce qui est essentiellement une expression. Merci encore! – Shane