I have a facebook app developed in plain PHP, I’m migrating the app to YII framework.
The thing is that I use a class call “utilsFacebook” where I have the object facebook(of the fb sdk) and all the methods that I need to get data from facebook, getUserId, getUserFriendList, etc.
I don’t know how to handle all the operations that I do in utilsFacebook with Yii.
Create a controller with the functions of utilsFacebook is the correct think to do?
Every time that I instance the controller would create a new Facebook object, Should I store that object in a SESSION to get a better performance or is a bad idea?
Having done a facebook app using yii as the framework, i would recommend you to make this library either a component, or an extension.
But definitely don’t put these functions in the controller directly. Whenever a controller needs them call the functions using your custom facebook util class.
Components can be put in the folder: projectrootfolder/protected/components
Extensions can be put in the folder: projectrootfolder/protected/extensions
If you don’t believe that either of these make semantic sense, you can always create a new folder within protected, say utils and put the class there. However i think extensions is the best way to go.
I don’t think it’s necessary to store the object in a session, because there will be no visible performance gain. Further you’ll complicate your code unnecessarily.
What i had done was, created an app level component and used this component throughout the app, in any controller.
Example:
In your application’s config, protected/config/main.php :
This will allow you to use the component like this:
Yii::app()->fbHelper->getFriends();Take a look at the facebook-opengraph extension, which could help you, on the way.