我是PhalconPHP的新手,我試圖將Facebook的php-sdk整合進去,而且我不知道如何讓它可以訪問$ facebook和$ user變量我的應用程序的每個頁面上(或重定向如果需要的話)在我的引導文件,所以到目前爲止,我有以下:PhalconPHP訪問控制器中的全局變量
try {
//Register an autoloader
$loader = new \Phalcon\Loader();
$loader->registerDirs(array(
'../app/controllers/',
'../app/models/',
'../app/facebook/'
))->register();
//Create a DI
$di = new Phalcon\DI\FactoryDefault();
//Setting up the view component
$di->set('view', function(){
$view = new \Phalcon\Mvc\View();
$view->setViewsDir('../app/views/');
return $view;
});
//setup facebook
$config = array();
$config['appId'] = 'xxxxxxxxxxxxxxxxxxxxxxx';
$config['secret'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$facebook = new Facebook($config);
Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;
Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2;
$user = null;
try{
$user = $facebook->getUser();
}catch(FacebookApiException $e){
$user =null;
//echo "FacebookApiException :". $e;
}
$di->set('facebook', function() {
global $facebook; // obviously don't want this here
return $facebook;
}, true);
$di['user'] = $user';
// $di->set('user', function(){
// return $['facebook']->getUser();
// });
// $di['facebook']=$facebook;
// $di['user']=$user;
//Handle the request
$application = new \Phalcon\Mvc\Application($di);
echo $application->handle()->getContent();
} catch(\Phalcon\Exception $e) {
echo "PhalconException: ", $e->getMessage();
}
現在$ Facebook的變量是現在在使用
$this->facebook
訪問控制器,因此我可以將它傳遞給視圖。但是,如何使用set('name',$ var)從控制器訪問$ user的最佳方式是什麼?似乎不是有效的。我是不是充其量只是做一些諸如
$di->set('facebook', function(){
//setup facebook config here
return new Facebook($config)l
});
或者我應該會對此的另一種方式即我應該創建一個用戶組件返回Facebook的用戶?
我應該採取的辦法在這裏Global acssess to some component in Phalcon這似乎表明,以下是有效
// Store it in the Di container
$this->di['config'] = $config;
**編輯
使用
$di->set('user',function() use($user){
return $user;
});
達到我想要的,但如果我這樣做
$di->set('user', $user);
我無法訪問它,任何人都可以解釋真正發生了什麼?
謝謝
感謝您的提示,不知道我想將它全部存儲在會話中。我真的不確定,但是爲什麼像$ this-> di ['config'] = $ config;無效 – TommyBs