要するに、それは大きな違いではなく、状況に応じて適切に感じるものなら何でも使用できます。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)