2

このコードをたどっている間

    $f3=require('lib/base.php');

    $f3->route('GET /brew/@count',
        function($f3) {
            echo $f3->get('PARAMS.count').' bottles of beer on the wall.';
        }
    );
    $f3->run();

https://github.com/bcosca/fatfree#routing-engineのFat-FreeFrameworkの例から、ブラウザーで次のエラーが発生します。

    Internal Server Error

    Missing argument 1 for {closure}()

    * /var/www/f3/index.php:36 Base->{closure}
    * /var/www/f3/lib/base.php:972         
    * Base->call(Closure::__set_state(),NULL,'beforeroute,afterroute')
    * /var/www/f3/index.php:40 Base->run()

問題は、$ f3がパラメーターとして機能するように渡されないことですが、その理由がわかりません。誰か助けてもらえますか?

4

1 に答える 1

3

私も同じ状況です!私はSourceForgeのバージョン3.0.1を使用していました。私は以下を試しましたが、うまくいきましたが、他の問題が発生しました:

$f3=require('lib/base.php');

$f3->route('GET /brew/@count',
    function() use ($f3) {
        echo $f3->get('PARAMS.count').' bottles of beer on the wall.';
    }
);
$f3->run();

use句(phpではあまり文書化されていません)を使用すると、無名関数の親スコープの変数を使用できます。詳細はこちら:クロージャと匿名関数(違いはありますか?)

F3コアを最新リリースにアップグレードしてみてください。開発者の1人は、 https://github.com/bcosca/fatfreeから3.0.2リリースにアップグレードすることを推奨しました。非常に迅速な修正でした!

于 2013-01-06T01:00:47.860 に答える