プロパティの動的な作成を防ぐ (入力ミスを防ぐため)__get
と関数を備えたデータベース モデルがあります。__set
class UserModel
{
public $Name;
public $LanguageCode; // f.e. "EN", "NL", ...
public function __get($name)
{
throw new Exception("$name is not a member");
}
public function __set($name, $value)
{
throw new Exception("$name is not a member");
}
}
これで、テンプレート エンジンに渡したいUserModel
インスタンスの配列( ) ができました。したがって、配列で実行し、テンプレートで使用するプロパティを追加し$users
たいと考えています。array_map
LanguageText
$users = array_map(function ($v)
{
$v = (object)$v; // this doesn't help to cast away from UserModel type
$v->LanguageText = GetLanguageText($v->LanguageCode);
return $v;
}, $users);
// pass $users to templating engine
もちろん、$v->LanguageText = ...
動的プロパティを追加しようとするため、この行はエラーをスローします。私はこれを試しました:オブジェクトを$v = (object)$v;
にキャストしますが、型は変更されません。データをシリアル化/非シリアル化せずにキャストする方法はありますか?UserModel
stdClass
UserModel
私はPHP 5.3.5を使用しています