با انتشار لاراول 8.28 ، تیلور اوتول به دو نوع بازیگر سفارشی جدید کمک کرد: AsArrayObject و AsCollection. ArrayObject دارای مزایایی نسبت به بازیگران موجود برای داده های JSON و آرایه است.
البته ، لاراول از قبل دارای توانایی ارسال ستون JSON / TEXT است که حاوی JSON به آرایه یا مجموعه ای مانند این است:
$casts = ['options' => 'array'];
با این حال ، دارای نکات منفی هم می باشد. ابتدا کد زیر با استفاده از آرایه ساده غیرممکن است:
$user
=
User::find(1);
$user->options['foo']
=
'bar';
$user->save();
احتمالاً بسیاری از توسعه دهندگان انتظار دارند که این کار جواب دهد ، اما اینطور نیست. تغییر دادن خصوصیات خاص آرایه اولیه که توسط این بازیگران برگردانده شده غیرممکن است. شما باید کل آرایه را تغییر دهید:
$user
=
User::find(1);
$user->options
=
['foo'
=>
'bar'];
$user->save();
با این حال ، این قابلیت های جدید از ویژگی بازیگران سفارشی Eloquent استفاده می کنند که مدیریت هوشمندتر و ذخیره سازی اشیا را پیاده سازی می کند. AsArrayObject رشته اصلی JSON را به یک نمونه از PHP ArrayObject می فرستند. این کلاس در کتابخانه استاندارد PHP گنجانده شده است و به یک شی allows اجازه می دهد مانند آرایه رفتار کند. چنین رویکردی موارد زیر را امکان پذیر می کند:
// Within model...
$casts
=
['options'
=>
AsArrayObject::class];
// Manipulating the options...
$user
=
User::find(1);
$user->options['foo']['bar']
=
'baz';
$user->save();
// You can't use ArrayObject in functions like array_map
// You can cast to an array or collection from ArrayObject
$user->options->toArray();
$user->options->collect();
برای ثبت نظر باید وارد سایت شوید یا ثبت نام نمایید.
نظر شما با موفقیت در سیستم ثبت گردید.