9

詳細

ユーザー状態変数を使用して、Joomlaセッションでデータを保存および取得できます。

例セット変数

$app =& JFactory::getApplication();
$app->setUserState( 'myvar', $myvarvalue );

ただし、JFactory / getSessionを使用して、セッション内の変数を格納および取得することもできます。

例セット変数

$session =& JFactory::getSession();
$session->set('myvar', $myvarvalue);

質問

2つの方法の違いは何ですか?いつ使用する必要がありますか?

4

1 に答える 1

9

要するに、それは大きな違いではなく、状況に応じて適切に感じるものなら何でも使用できます。JApplication/setUserStateコードの方が自明であると思うので、私は固執し ます。

実際の違い:

どちらの方法でも、指定された状態がセッションに保存されます。実際には、状態を格納するためにJApplication/setUserState内部的に使用されます。JSession/set

JApplication/setUserState異なる点は、すべてのキーと値のペアをJRegistryに格納することです。したがって、次のようになります。

$session = JFactory::getSession();
$registry = $session->get('registry');
$registry->set('myvar', $myvarvalue);

では、?を使用する意味は何JRegistryですか?それはほとんど機能的に提供されていJRegistryFormatます。これを使用して、状態の解析とフォーマットの両方を行うことができます。

$session = JFactory::getSession();
$registry = $session->get('registry');
$json = $registry->toString('JSON');
$xml = $registry->toString('XML');

JApplication/setUserStateまた、状態を使用すると、「デフォルト」の名前空間になってしまうことも指摘しておく価値があります。

$app = JFactory::getApplication();
$app->setUserState( 'myvar', $myvarvalue );
// $_SESSION['default']['registry']->set('myvar', $myvarvalue)
于 2012-11-02T14:31:26.607 に答える