2017-05-29 4 views
0

Die Variable $user ist Null in dieser Closure-Funktion. Ich verstehe nicht warum.Variable ist Null in PHP-Schließung

routes.php

require_once(__DIR__ . '/classes/user.php'); 
$user = User::getInstance(); // returns a $_SESSION user or a new User() 

Das funktioniert nicht

$app->group('/user', function() use ($app, $user) { 

    $app->post('/activate', function(Request $request, Response $response) { 
     $parsedBody = $request->getParsedBody(); 
     $result = $user->activate($parsedBody); // error user is null 
     return $response->withJson($result); 
    }); 
}); 

Dies tut

$app->group('/user', function() use ($app) { 

    $app->post('/activate', function(Request $request, Response $response) { 
     $parsedBody = $request->getParsedBody(); 
     $user = User::getInstance(); 
     $result = $user->activate($parsedBody); 
     return $response->withJson($result); 
    }); 
}); 
+0

https://stackoverflow.com/questions/18621297/php-closures-scoping-of-variables – sumit

Antwort

1

Sie erben müssen, dass Variable in Ihre Funktion.

http://php.net/manual/en/functions.anonymous.php - # 3

$app->group('/user', function() use ($app, $user) { 

    $app->post('/activate', function(Request $request, Response $response) use ($user) { 
     $parsedBody = $request->getParsedBody(); 
     $result = $user->activate($parsedBody); // now it shouldn't 
     return $response->withJson($result); 
    }); 
}); 
+0

Ah .. Ich hasse das wirklich. Gibt es eine Möglichkeit, es weniger streng zu machen? – jozenbasin

Verwandte Themen