web-dev-qa-db-ja.com

Joomla 4でキャッシュコールを使用する方法

documentation から、この部分を使用して大量のデータを保存します

_if (empty($families)) {
  $cache = Factory::getCache();
  $families = $cache->call( array( 'JFormFieldFamily', 'getFamilyList' ) );
} 
_

私のJoomla 3.9.6で完璧に動作しますが、Joomla 4の私の拡張はこれをスローします

_Warning: call_user_func_array() expects parameter 1 to be a valid callback,
class 'Joomla\CMS\Cache\Cache' does not have a method 'call' in
site\libraries\src\Cache\CacheController.php on line 74
_

_Joomla\CMS\Cache\Cache_の ドキュメント を調べます

_$families = $cache->call( array( 'JFormFieldFamily', 'getFamilyList' ) );
_

なる

_$families = $cache->get( array( 'JFormFieldFamily', 'getFamilyList' ) );
_

joomla 3.9/4で正しく動作します。

$cache->store()メソッドを使用する必要がありますか?

2
thednp

callメソッドは、get()の単なるラッパーであるため、Joomla 4.0では削除済みとしてマークされています。

これはget()メソッド内で行われるため、キャッシュを手動で保存する必要はありません。

https://github.com/joomla/joomla-cms/blob/4.0-dev/libraries/src/Cache/Controller/CallbackController.php#L139

2
Lodder