صفحه اصلی >> بلاگ >> AsArrayObject و AsCollection در لاراول 8.28

AsArrayObject و AsCollection در لاراول 8.28

دسته:لاراول تاریخ انتشار: 18 فوریه 2021 ایمان رضایی

با انتشار لاراول 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();

n0
n217

برای ثبت نظر باید وارد سایت شوید یا ثبت نام نمایید.


نظر شما با موفقیت در سیستم ثبت گردید.