我完全不熟悉與網站(如HTML,PHP,Twig,Symfony等)有關的所有內容。我必須從Silex開始建立一個網站。 到目前爲止,我設法讓所有的工作都能正常工作,但是我真的很想用我想要使用的共享服務。我在一個控制器中設置的信息在另一個控制器中不可用。我創建了一個非常小的例子來說明我的問題:Silex共享服務似乎被實例化了不止一次
//This is the main file app.php
<?php
require_once __DIR__.'/vendor/autoload.php';
require_once __DIR__.'/src/Inpainter.php';
$app = new Silex\Application();
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__.'/templates',
));
$app['inpainter'] = $app->share(function() use($app) {
return new Inpainter();
});
$app->get('/test/', function() use ($app){
$app['inpainter']->setMask('foo');
return $app['twig']->render('index.html.twig', array(
));
})
->bind('home');
$app->get('/downloads/', function() use ($app){
$app['inpainter']->writeMask();
return $app['twig']->render('downloads.html.twig', array(
));
})
->bind('downloads');
$app->run();
?>
的index.html.twig
文件只包含一個重定向到「下載」的鏈接。 的Inpainter
類如下所示:
<?php
class Inpainter {
private $mask;
public function setMask ($mask) {
$this->mask = $mask;
}
public function writeMask() {
echo 'I am inpainting with ' . $this->mask;
}
}
?>
現在,如果我點擊index
網站的鏈接,該網站downloads
應顯示「我以foo補繪」。但相反,我有「我正在修補」。我很確定我犯了一個非常愚蠢的錯誤,但我無法找到它。任何幫助將不勝感激。
非常感謝,這是非常有益的! – Sarah 2014-09-12 07:46:29