由於實際開發中需要查看介面傳回值結構和實際的資料範例,每次都寫controller再訪問url看下是比較麻煩的。
所以如果能像 php -a這樣互動的方式調用網站應用程式中定義的model和function的話,將會極其的方便。
目錄結構如下:
app/public/tinker
app為網站具體邏輯實現的部分
public下面有1個index.php為網站的入口
tinker就是我們需要接入pysh,實現REPL的檔案了
由於Slim裡面需要PATH_INFO的值,但是命令列啟動並執行時候,這個值是不存在的,所以需要在代碼中mock一下;代碼如下:
#!/usr/bin/env phpenvironment = \Slim\Environment::mock([ 'PATH_INFO' => '/playground']);$app->notFound(function () use ($app) { $path = $app->environment['PATH_INFO']; echo "Cannot route to $path" . PHP_EOL; $app->stop();});$app->error(function (\Exception $e) use ($app) { echo $e . PHP_EOL; $app->stop();});$app->any('/playground', function () { $config = new \Psy\Configuration([ 'tabCompletion' => true, 'tabCompletionMatchers' => [ new \Psy\TabCompletion\Matcher\ClassNamesMatcher, new \Psy\TabCompletion\Matcher\ClassMethodsMatcher, new \Psy\TabCompletion\Matcher\ClassAttributesMatcher, new \Psy\TabCompletion\Matcher\FunctionsMatcher, ], ]); $shell = new \Psy\Shell(); $shell->run();});$app->run();