0

私は何時間もこれに頭を悩ませてきましたが、問題を理解できないようです。基本的に、どこでも呼び出されるライブラリファイルがあり、ここで呼び出している場所を除いてどこでも問題なく動作します.

db オブジェクトにアクセスして何かクエリを実行するまで、問題なく動作するようにスリムにできますか? 私はおそらくぼんやりしていますが、これは多かれ少なかれ、スリムなドキュメントでそれを行う方法とほぼ同じであり、いくつかの余分な行が挿入されているため、機能しなくなっても意味がありません。

    require_once "libary.php";
    require 'Slim/Slim.php';
    \Slim\Slim::registerAutoloader();

    $app = new \Slim\Slim();

    $app->get('/login/:username/:password', function ($username, $password) {
  //check the login details against the db...
    echo "I SEE THIS";
    $query = "select * from sometable";
    $db->query($query);
    echo "I DONT SEE THIS";

    });
    $app->run();
4

3 に答える 3

1

次のように、データベースをシングルトンとしてアプリに挿入することもできます。

$app->container->singleton('db', function () use ($dbcfg){
    return new \myDatabaseClass($dbcfg);
});

その後、いつでもここで利用できます。

$app->db->query();

詳細については、http: //docs.slimframework.com/#DI-Overviewを参照してください。

于 2014-03-26T16:52:49.813 に答える
1

応答が遅くて申し訳ありません。かなり恥ずかしいですが、必要なのはそのインライン関数に 1 行のコードを挿入することだけでした。

グローバル $db

変数はライブラリで定義されているため、関数内から変数が見えると(誤って)想定していました。

ありがとう

マルク

于 2012-10-29T11:45:55.260 に答える
1

useキーワードで GLOBAL を使用することを避けることができます(PHP >= 5.3.0):

$app->get('/login/:username/:password', function ($userstrong textname, $password) use ($db) {
    //check the login details against the db...
    echo "I SEE THIS";
    $query = "select * from sometable";
    $db->query($query);
    echo "I DONT SEE THIS";
});
于 2014-02-26T10:31:57.080 に答える