1

プレーンな PHP で開発された facebook アプリがあり、アプリを YII フレームワークに移行しています。

問題は、オブジェクトfacebook(fb sdkの)と、facebook、getUserId、getUserFriendListなどからデータを取得するために必要なすべてのメソッドがあるクラス呼び出し「utilsFacebook」を使用することです.

utilsFacebook で行うすべての操作を Yii で処理する方法がわかりません。

utilsFacebook の関数を使用してコントローラーを作成することは正しいと思いますか? コントローラーをインスタンス化するたびに、新しい Facebook オブジェクトが作成されます。そのオブジェクトを SESSION に格納してパフォーマンスを向上させる必要がありますか?それとも悪い考えですか?

4

1 に答える 1

1

Q. utilsFacebook の関数を使用してコントローラーを作成するのは正しい考えですか?

フレームワークとして yii を使用して facebook アプリを作成したので、このライブラリをコンポーネントまたは拡張機能にすることをお勧めします。

ただし、これらの関数をコントローラーに直接入れないでください。コントローラーが必要なときはいつでも、カスタム facebook util クラスを使用して関数を呼び出します。

コンポーネントは次のフォルダーに配置できます: projectrootfolder/protected/components

拡張機能は次のフォルダーに配置できます: projectrootfolder/protected/extensions

これらのいずれもセマンティックな意味を成さないと思われる場合は、常にprotected内に新しいフォルダーを作成できます。たとえば、utilsを作成し、そこにクラスを配置します。ただし、拡張機能が最適な方法だと思います。

Q.パフォーマンスを向上させるためにそのオブジェクトを SESSION に格納する必要がありますか?それとも悪い考えですか?

目に見えるパフォーマンスの向上はないため、オブジェクトをセッションに保存する必要はないと思います。さらに、コードが不必要に複雑になります。

私が行ったことは、アプリレベルのコンポーネントを作成し、このコンポーネントをアプリ全体、任意のコントローラーで使用することでした。

例:

アプリケーションの設定で、protected/config/main.php :

'components'=>array(
    'fbHelper'=>array( // gave the component this name
        'class'=>'ext.utils.FacebookHelper', // had stored the helper class in extensions/utils folder
        'parameter1'='somevalue',
        // more parameters
    ),

    // standard yii app components

),

これにより、次のようにコンポーネントを使用できるようになります。Yii::app()->fbHelper->getFriends();

途中で、あなたを助けることができるfacebook-opengraph拡張機能を見てください。

于 2012-07-26T04:38:33.417 に答える