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