Я новичок в PhalconPHP, и я пытаюсь интегрировать php-sdk в Facebook, и я не уверен, как это сделать, чтобы я мог получить доступ к переменным $ 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); похоже, недействительно. Могу ли я лучше просто делать что-то такое, как
$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