2013-12-16 78 views
2
<?php 
    require 'vendor/autoload.php'; 

    // Include all controllers 
    foreach(glob("controllers/*.php") as $controller) 
    { 
    include $controller; 
    } 

    // Instantiate a new Slip application 
    $app = new \Slim\Slim(array(
    'debug' => true 
)); 

    // HOME CONTROLLER 
    $home = new Home; 
    $vr = $home->index(); 

    // Register application routes 
    $app->get('/', function() { 
     echo $vr; 
    }); 

    // Run application 
    $app->run(); 

這是我的控制器我想使用控制器,而不是將所有內容都保存在這個單個文件中。無論如何,我有一個控制器地圖,我保留所有的控制器。我自動包括他們都在啓動,但是我似乎無法通過$home變量get()方法,所以我可以稱之爲$vr indede,或$home->index()

回答

6

你可以把它傳遞給你的函數是這樣的:

..., function() use($home){ 
    ... 

我認爲苗條也通過$app作爲您的函數的第一個參數。

編輯:其實它不according to its docs,所以你必須要傳遞太use語句中(函數的參數是URL參數):

$app->get('/', function() use($home, $app) { 
    $vr = $home->index(); 
    echo $vr; 
    // $app is accesible too... 
}); 
+0

嗯,是的。這解決了我的問題,非常如此。謝謝第四章。現在我還可以將$ app實例傳遞給我的控制器,並使用數據庫類(R)並直接從我的控制器調用$ app-> render()。 –

+0

你會編輯你的答案以刪除不正確的代碼示例嗎?我看到你在代碼片段下面修改了哪些內容以糾正你自己,但代碼示例真的很突出。我想提高您的答案,但不是在樣本仍然存在的時候。 –

+0

當然。沒有刪除它,但我已經糾正它 –