仮想フィールドをキャッシュする方法はありますか?エンティティがキャッシュから取得されても、必要に応じていつでも仮想フィールドが生成されることを理解しているので、自動的に、そのエンティティが属するエンティティを意味します。CakePHP 3.4:仮想フィールドをキャッシュする方法
protected function _getFullName()
{
$fullName = Cache::read('full_name_for_' . $this->_properties['id'], 'users');
if (empty($fullName)) {
$fullName = $this->_properties['first_name'] . ' ' . $this->_properties['last_name'];
Cache::write('full_name_for_' . $this->_properties['id'], $fullName, 'users');
}
return $fullName;
}
しかし、私は、実際にCakePHPは直接それを行うことができるかどうかを知りたいと思った:
もちろん、私は私が、個人的にそれを(例)世話をすることができます知っています。
EDIT
コンテキスト。
Post
エンティティには、text
プロパティがあります。 text
には、画像を含むことができます(HTMLコードとして)。今度は、のどこかにを保存して、テキストに含まれる最初のイメージのURLとそのサイズを保存する必要があります。だから、first_image
バーチャルフィールドを作成しました。これは正規表現を使用します。問題は画像のサイズにあります。特に画像が遠隔の場合は、getimagesize()
の機能が実行されるたびに実行できません。なぜなら、わかりやすい理由があります。だからどうする?
Ok @ burzum。 'Post'エンティティは' text'プロパティを持っています。 'text'には画像を含むことができます(htmlコードとして)。今度は、 'text'に含まれる最初の画像のURLとそのサイズを*どこかに保存しなければなりません。だから、正規表現を使った 'first_image'仮想フィールドを作成しました。問題は画像のサイズにあります。特に、画像が遠隔の場合は、簡単に理解できる理由で、 'getimagesize()'関数が実行されるたびに実行できません。だからどうする? –
コードのコンテキストを変更しました –
beforeSave()コールバックでこの種の処理を行うだけです。 book.cakephp.orgでその使い方を確認してください。そこに情報を抽出してください。次に何かを尋ねると、何かの代わりに実際の問題を思い付くことは賢明かもしれません。 ;) – burzum