الدوال المساعدة في Laravel

من موسوعة حسوب

مقدمة

يتضمن Laravel عددًا من دوال PHP المساعدة. تُستعمل العديد من هذه الدوال من قبل Laravel لكن بامكانك استعمالها في تطبيقك اذا احتجتهم.

قائمة التوابع

المصفوفات والكائنات

()array_add

تضيف الدالة array_add الثنائي مفتاح\قيمة الممرّر لمصفوفة إذا كان المفتاح غير موجود مسبقًا:

$array = array_add(['name' => 'Desk'], 'price', 100);

// ['name' => 'Desk', 'price' => 100]

()array_collapse

تحول الدالة array_collapse مصفوفة مصفوفات لمصفوفة واحدة:

$array = array_collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);

// [1, 2, 3, 4, 5, 6, 7, 8, 9]

()array_divide

تعيد الدالة array_divide مصفوفتين، واحدة تحتوي المفاتيح وأخرى تحتوي القيم من المصفوفة الممرّرة:

[$keys, $values] = array_divide(['name' => 'Desk']);

// $keys: ['name']

// $values: ['Desk']

()array_dot

تسطّح الدالة array_dot مصفوفة متعددة الأبعاد لمصفوفة ببعد واحد تستعمل رمز النقطة لبيان العمق:

$array = ['products' => ['desk' => ['price' => 100]]];

$flattened = array_dot($array);

// ['products.desk.price' => 100]

()array_except

تحذف الدالة array_except الثنائي مفتاح\قيمة الممرّر من المصفوفة:

$array = ['name' => 'Desk', 'price' => 100];

$filtered = array_except($array, ['price']);

// ['name' => 'Desk']

()array_first

تعيد الدالة array_first العنصر الأول من المصفوفة الممرّرة الذي يستجيب لشرط صحّة:

$array = [100, 200, 300];

$first = array_first($array, function ($value, $key) {
   return $value >= 150;
});

// 200

يمكن تمرير قيمة افتراضية كمعامل ثالث. تُعاد القيمة الافتراضية في حال لم يستجب أي عنصر لشرط الصحّة:

$first = array_first($array, $callback, $default);

()array_flatten

تسطِّح الدالة array_flatten مصفوفة متعدّدة الأبعاد لمصفوفة ببعد واحد:

$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];

$flattened = array_flatten($array);

// ['Joe', 'PHP', 'Ruby']

()array_forget

تحذف الدالة array_forget الثنائي مفتاح\قيمة من مصفوفة متداخلة باستعمال رمز" النقطة ":

$array = ['products' => ['desk' => ['price' => 100]]];

array_forget($array, 'products.desk');

// ['products' => []]

()array_get

تسترجع الدالة array_get قيمة من مصفوفة متداخلة باستعمال رمز "النقطة":

$array = ['products' => ['desk' => ['price' => 100]]];

$price = array_get($array, 'products.desk.price');

// 100

تقبل الدالة أيضًا قيمة افتراضية تعيدها في حال لم تجد المفتاح الممرّر:

$discount = array_get($array, 'products.desk.discount', 0);

// 0

()array_has

تتثبت الدالة array_has من وجود عنصر أو عناصر ممرّرة في المصفوفة باستعمال الرمز "نقطة":

$array = ['product' => ['name' => 'Desk', 'price' => 100]];

$contains = array_has($array, 'product.name');

// true

$contains = array_has($array, ['product.price', 'product.discount']);

// false

()array_last

تعيد الدالة array_last آخر عنصر يستجيب لشرط الصحّة:

$array = [100, 200, 300, 110];

$last = array_last($array, function ($value, $key) {
 return $value >= 150;
});

// 300

يمكن تمرير قيمة افتراضية كمعامل ثالث تعيدها الدالة في حال لم يستجب أي عنصر لشرط الصحة:

$last = array_last($array, $callback, $default);

()array_only

تعبد الدالة array_only فقط الثنائيات الممرّرة من المصفوفة:

$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];

$slice = array_only($array, ['name', 'price']);

// ['name' => 'Desk', 'price' => 100]

()array_pluck

تستعيد الدالة array_pluck كل القيم لمفتاح ممرّر من المصفوفة:

$array = [
  ['developer' => ['id' => 1, 'name' => 'Taylor']],
  ['developer' => ['id' => 2, 'name' => 'Abigail']],

$names = array_pluck($array, 'developer.name');
];

// ['Taylor', 'Abigail']

يمكنك أيضًا تحديد المفاتيح التي تريد لعرضها في النتيجة :

$names = array_pluck($array, 'developer.name', 'developer.id');

// [1 => 'Taylor', 2 => 'Abigail']

()array_prepend

تضبف الدالة array_prepend عنصرًا في أول المصفوفة:

$array = ['one', 'two', 'three', 'four'];

$array = array_prepend($array, 'zero');

// ['zero', 'one', 'two', 'three', 'four']

عند الحاجة، بإمكانك تحديد المفتاح الذي يجب استعماله مع القيمة:

$array = ['price' => 100];

$array = array_prepend($array, 'Desk', 'name');

// ['name' => 'Desk', 'price' => 100]

()array_pull

تعيد الدالة array_pull وتحذف ثنائي مفتاح\قيمة من المصفوفة:

$array = ['name' => 'Desk', 'price' => 100];

$name = array_pull($array, 'name');

// $name: Desk

// $array: ['price' => 100]

يمكن تمرير قيمة افتراضية كمعامل ثالث تعيده الدالة في حال عدم وجود المفتاح:

$value = array_pull($array, $key, $default);

()array_random

تعيد الدالة array_random قيمة عشوائية من المصفوفة:

$array = [1, 2, 3, 4, 5];

$random = array_random($array);

// 4 - (اختيرت بعشوائية)

يمكن أيضًا تحديد عدد العناصر الذي يجب إعادته كمعامل ثاني اختياري.لاحظ أن هذا الخيار سيعيد مصفوفة حتو لو اخترت عنصرًا واحدًا:

$items = array_random($array, 2);

// [2, 5] - (retrieved randomly)

()array_set

تعيّن الدالة array_set قيمة في مصفوفة متداخلة باستعمال الرمز "نقطة":

$array = ['products' => ['desk' => ['price' => 100]]];

array_set($array, 'products.desk.price', 200);

// ['products' => ['desk' => ['price' => 200]]]

()array_sort

ترتّب الدالة array_sort المصفوفة حسب القيم:

$array = ['Desk', 'Table', 'Chair'];

$sorted = array_sort($array);

// ['Chair', 'Desk', 'Table']

يمكن أيضًا ترتيب مصفوفة حسب نتائج النطاق المغلق Closure:

$array = [
    ['name' => 'Desk'],
    ['name' => 'Table'],
    ['name' => 'Chair'],
];

$sorted = array_values(array_sort($array, function ($value) {
    return $value['name'];
}));

/*
    [
        ['name' => 'Chair'],
        ['name' => 'Desk'],
        ['name' => 'Table'],
    ]
*/

()array_sort_recursive

ترتّب الدالة array_sort_recursive المصفوفة مرتبة بشكل تكراري باستعمال الدالة sort:

$array = [
    ['Roman', 'Taylor', 'Li'],
    ['PHP', 'Ruby', 'JavaScript'],
];

$sorted = array_sort_recursive($array);

/*
    [
        ['Li', 'Roman', 'Taylor'],
        ['JavaScript', 'PHP', 'Ruby'],
    ]
*/

()array_where

ترشح الدالة array_where المصفوفة باستعمال النطاق المغلق المعطى Closure:

$array = [100, '200', 300, '400', 500];

$filtered = array_where($array, function ($value, $key) {
    return is_string($value);
});

// [1 => '200', 3 => '400']

()array_wrap

تغلف الدالة array_wrap القيمة الممرّرة في مصفوفة. إذا كانت القيمة الممرّرة مصفوفة بالأصل فلن تتغير:

$string = 'Laravel';

$array = array_wrap($string);

// ['Laravel']

إذا كانت القيمة الممرّرة null، تعيد الدالة array_wrap مصفوفة فارغة:

$nothing = null;

$array = array_wrap($nothing);

// []

()data_fill

تضبط الدالة data_fill  قيمة مفقودة بمصفوفة متداخلة أو بكائن باستعمال الرمز "نقطة":

$data = ['products' => ['desk' => ['price' => 100]]];

data_fill($data, 'products.desk.price', 200);

// ['products' => ['desk' => ['price' => 100]]]

data_fill($data, 'products.desk.discount', 10);

// ['products' => ['desk' => ['price' => 100, 'discount' => 10]]]

تقبل الدالة data_fill أيضًا الرمز "*" كمحرف بدل لرمز يملؤه الهدف بما يلائم:

$data = [

   'products' => [
       ['name' => 'Desk 1', 'price' => 100],
       ['name' => 'Desk 2'],
   ],
];

data_fill($data, 'products.*.price', 200);

/*

   [
       'products' => [
           ['name' => 'Desk 1', 'price' => 100],
           ['name' => 'Desk 2', 'price' => 200],
       ],
   ]

()data_get

تسترجع الدالة data_get قيمة من مصفوفة متداخلة أو كائن باستعمال الرمز "نقطة":

$data = ['products' => ['desk' => ['price' => 100]]];

$price = data_get($data, 'products.desk.price');

// 100

تقبل الدالة أيضًا قيمة افتراضيّة تعيدها إذا لم تجد المفتاح في المصفوفة:

$discount = data_get($data, 'products.desk.discount', 0);

// 0

()data_set

تضبط الدالة data_set قيمة في مصفوفة متداخلة أو كائن باستعمال الرمز "نقطة":

$data = ['products' => ['desk' => ['price' => 100]]];

data_set($data, 'products.desk.price', 200);

// ['products' => ['desk' => ['price' => 200]]]

تقبل الدالة data_set أيضًا محرفات بديلة وتعوضها بما يلائم:

$data = [

   'products' => [
       ['name' => 'Desk 1', 'price' => 100],
       ['name' => 'Desk 2', 'price' => 150],
   ],
];

data_set($data, 'products.*.price', 200);

/*

   [
       'products' => [
           ['name' => 'Desk 1', 'price' => 200],
           ['name' => 'Desk 2', 'price' => 200],
       ],
   ]

في العادة، تعاد كتابة القيم. إذا أردت تعيين قيمة غير موجودة، يمكنك تمرير القيمة false كمعامل ثالث:

$data = ['products' => ['desk' => ['price' => 100]]];

data_set($data, 'products.desk.price', 200, false);

// ['products' => ['desk' => ['price' => 100]]]

()head

تعيد الدالة head‎ العنصر الأول من مصفوفة ممرّرة:

$array = [100, 200, 300];

$first = head($array);

// 100

()last

تعيد الدالة last العنصر الأخير من المصفوفة الممرّرة:

$array = [100, 200, 300];

$last = last($array);

// 300

المسارات

()app_path

تعيد الدالة app_path‎  المسار الكامل للدليل app. يمكن أيضًا استعمال الدالة لإنشاء مسار لملف موجود في دليل التطبيق:

$path = app_path();

$path = app_path('Http/Controllers/Controller.php');

()base_path

تعيد الدالةbase_path ‎ مسارا لجذر التطبيق. يمكنك أيضًا استعمال الدالة لإنشاء مسار مؤهل بشكل كامل لملف تابع لدليل جذر التطبيق:

$path = base_path();

$path = base_path('vendor/bin');

()config_path

تعيد الدالة config_path()‎ المسار المؤهل بشكل كامل للدليل config. يمكنك استعمال الدالة لإنشاء مسار مؤهل بشكل كامل لملف معين في دليل الضبط:

$path = config_path();

$path = config_path('app.php');

()data_path

تعيد الدالة data_path()‎ مسارا مؤهلا للدليل database. يمكن أيضًا استعمال الدالة لإنشاء مسار مؤهل لملف في دليل قاعدة البيانات:

$path = database_path();

$path = database_path('factories/UserFactory.php');

()mix

تعيد الدالة mix()‎ مسارا للملف Mix:

$path = mix('css/app.css');

()public_path

تعيد الدالة public_path()‎ مسارًا مؤهلا للدليل public. يمكنك أيضًا استعمال الدالة لإنشاء مسارات مؤهلة لملفات في الدليل public:

$path = public_path();

$path = public_path('css/app.css');

()resource_path

تعيد الدالة resource_path()‎  مسارًا مؤهلا للدليل resources. يمكنك أيضًا استعمال الدالة لإنشاء مسار مؤهل لملف في الدليل resources:

$path = resource_path();

$path = resource_path('assets/sass/app.scss');

()storage_path

تعيد الدالة storage_path()‎ مسارًا مؤهلا للدليل storage. يمكن أيضًا استعمال الدالة لإنشاء مسارات مؤهلة لملف في الدليل storage:

$path = storage_path();

$path = storage_path('app/file.txt');

السلاسل النصية

()__

تترجم الدالة __‎‎‎ سلسلة الترجمة أو مفتاح الترجمة باستعمال ملفات الترجمة في التطبيق:

echo __('Welcome to our application');

echo __('messages.welcome');

إذا لم توجد سلسلة أو مفتاح الترجمة، تعيد الدالة القيمة الممرّرة. لذا باستعمال المثال السابق، تعيد الدالة "message.welcome" في حال عدم وجود المفتاح.

()camel_case

تحوّل الدالة camel_case السلسلة لسلسلة منسقةً بحالة سِنَام الجمل:

$converted = camel_case('foo_bar');

// fooBar

()class_basename

تعيد الدالة class_basename اسم الصنف للصنف الممرّر بعد حذف دليله:

$class = class_basename('Foo\Bar\Baz');

// Baz

()e

تنفذ الدالة e الدالة htmlspecialchars من PHP مع الخيار double_encode على القيمة true افتراضيًّا:

echo e('<html>foo</html>');

// <html>foo</html>

()ends_with

تحدّد الدالة ends_with إذا كانت السلسلة تنتهي بالقيمة الممرّرة:

$result = ends_with('This is my name', 'name');

// true

()kebab_case

تحول الدالة kebab_case السلسلة الممرّرة منسقةً بحالة kebab-case:

$converted = kebab_case('fooBar');

// foo-bar

()preg_replace_array

تعوّض الدالة preg_replace_array الأسلوب الممرّر في السلسلة باستعمال مصفوفة:

$string = 'The event will take place between :start and :end';

$replaced = preg_replace_array('/:[a-z_]+/', ['8:30', '9:00'], $string);

// The event will take place between 8:30 and 9:00

()snake_case

تحول الدالة snake_case السلسلة الممرّرة منسقةً بحالة snake_case

$converted = snake_case('fooBar');

// foo_bar

()starts_with

تحدد الدالة start_with إذا كان السلسلة الممرّرة تبدأ بالقيمة الممررّة:

$result = starts_with('This is my name', 'This');

// true

()str_after

تعيد الدالة str_after كل شيء بعد السلسلة الممررة:

$slice = str_after('This is my name', 'This is');

// ' my name'

()str_before

تعيد الدالة كل شيء قبل السلسلة الممررة

$slice = str_before('This is my name', 'my name');

// 'This is '

()str_contains

تحدد الدالة str_contains إذا كانت السلسلة تحتوي القيمة الممرّرة (مع احترام الحروف الكبيرة والصغيرة):

$contains = str_contains('This is my name', 'my');

// true

يمكنك تمرير مصفوفة من القيم لتحدد إذا كانت موجودة في السلسلة:

$contains = str_contains('This is my name', ['my', 'foo']);

// true

()str_finish

تضيف الدالة str_finish نسخةً واحدةً من قيمة ممرّرة لسلسلة إذا لم تكن السلسلة تنتهي بتلك القيمة:

$adjusted = str_finish('this/string', '/');

// this/string/

$adjusted = str_finish('this/string/', '/');

// this/string/

()str_is

تحدد الدالة str_is إذا كانت السلسلة مطابقة لأسلوب ممرّر. تُستعمل الرموز "*" للدلالة على محرف بدل:

$matches = str_is('foo*', 'foobar');

// true

$matches = str_is('baz*', 'foobar');

// false

()str_limit

تقطع الدالة str_limit السلسلة حسب الطول المحدد:

cated = str_limit('The quick brown fox jumps over the lazy dog', 20);

// The quick brown fox...

يمكنك تمرير معامل ثالث لتغيير السلسلة التي تضاف في الآخر:

$truncated = str_limit('The quick brown fox jumps over the lazy dog', 20, ' (...)');

// The quick brown fox (...)

()Str::orderedUuid

تنشئ الدالة str::orderedUUid معرف فريد عالمي لبصمة وقت يمكن تخزينه في قاعدة بيانات:

use Illuminate\Support\Str;

return (string) Str::orderedUuid();

()str_plural

تحول الدالة str_plural السلسلة لصيغة الجمع. تدعم هذه الدالة حاليا اللغة الإنقليزية فقط:

$plural = str_plural('car');

// cars

$plural = str_plural('child');

// children

يمكنك تمرير معامل ثاني للدالة  لاسترجاع صيغة المفرد أو الجمع للسلسلة:

$plural = str_plural('child', 2);

// children

$plural = str_plural('child', 1);

// child

()str_random

تنشئ الدالة str_random سلسلة نصية عشوائية بالطول المحدد. تستخدم هذه الدالة الدالة random_bytes من PHP:

$random = str_random(40);

()str_replace_array

تستبدل الدالة str_replace_array القيمة الممرّرة من السلسلة النصية باستخدام مصفوفة:

$string = 'The event will take place between ? and ?';

$replaced = str_replace_array('?', ['8:30', '9:00'], $string);

// The event will take place between 8:30 and 9:00

()str_replace_first

تستبدل الدالة str_replace_first الظهور الأول للقيمة الممرّرة بسلسة نصية:

$replaced = str_replace_first('the', 'a', 'the quick brown fox jumps over the lazy dog');

// a quick brown fox jumps over the lazy dog

()str_replace_last

تستبدل الدالة str_replace_last الظهور الأخير للقيمة الممرّرة بسلسة نصية:

$replaced = str_replace_last('the', 'a', 'the quick brown fox jumps over the lazy dog');

// the quick brown fox jumps over a lazy dog

()str_singular

تحوّل الدالة str_singular سلسلة نصية لصيغة المفرد. تدعم الدالة الآن فقط اللغة الإنقليزية:

$replaced = str_replace_last('the', 'a', 'the quick brown fox jumps over the lazy dog');

// the quick brown fox jumps over a lazy dog

()str_slug

تنشئ الدالة str_slug قيمة "slug" يمكن استعمالها مع مسارات URL:

$slug = str_slug('Laravel 5 Framework', '-');

// laravel-5-framework

()str_start

تضيف الدالة str_start نسخة واحدة من القيمة الممرّرة في أول السلسلة إذا لم تكن موجودة:

$adjusted = str_start('this/string', '/');

// /this/string

$adjusted = str_start('/this/string', '/');

// /this/string

()studly_case

تحول الدالة studly_case السلسلة الممرّرة منسقةً بحالة StudlyCase:

$converted = studly_case('foo_bar');

// FooBar

()title_case

تحول الدالة title_case السلسلة الممرّرة منسقةً بحالة Title Case:

$converted = title_case('a nice title uses the correct case');

// A Nice Title Uses The Correct Case

()trans

تترجم الدالة trans مفتاح الترجمة الممرّر باستعمال ملفات التوطين:

echo trans('messages.welcome');

إذا لم يكن مفتاح الترجمة موجودًا، تعيد الدالة المفتاح الممرّر. لذا، في المثال السابق ستعيد الدالة message.welcome في حال لم يكن المفتاح موجودًا في ملف التوطين.

()trans_choice

تترجم الدالة trans_choice السلسلة الممرّرة مع مع تصريف الكلمة حسب العدد المُمرَّر إلى الدالة (inflection):

echo trans_choice('messages.notifications', $unreadCount);

إذا لم يكن مفتاح الترجمة موجودًا، تعيد الدالة المفتاح الممرّر. لذا، في المثال السابق ستعيد الدالة welcome.notifications في حال لم يكن المفتاح موجودًا.

()Str::uuid

تنشئ الدالة المعرف الفريد العالمي UUID (الإصدار 4):

use Illuminate\Support\Str;

return (string) Str::uuid();

العناوين URLs

()action

تنشئ الدالة action عنوان URL لعمل وحدة التحكم. لا تحتاج لتمرير مجال الأسماء الكامل لوحدة التحكم. بدلًا من ذلك، مرّر اسم صنف وحدة التحكم نسبة لمجال الأسماء App\Http\Controllers:

$url = action('HomeController@index');

$url = action([HomeController::class, 'index']);

إذا كان التابع يقبل معاملات مسارات، يمكنك تمريرها كمعامل ثاني للدالة:

$url = action('UserController@profile', ['id' => 1]);

()asset

تولّد الدالة asset عنوان URL للأصول باستخدام مخطط الطلب ( HTTP أو HTTPS):

$url = asset('img/photo.jpg');

()secure_asset

تولّد الدالة secure_asset  عنوان URL لأحد الأصول باستخدام HTTPS:

$url = secure_asset('img/photo.jpg');

()route

تنشئ الدالة route عنوان URL للمسار المسمى:

$url = route('routeName');

إذا كان المسار يقبل معاملات، يمكنك تمريرها كمعامل ثاني للتابع:

$url = route('routeName', ['id' => 1]);

في العادة تنشئ الدالة route عنوان URL مطلق، إذا أردت عنوانا نسبيا، مرّر false كمعامل ثالث:

$url = route('routeName', ['id' => 1], false);

()secure_url

تنشئ الدالة secure_url عنوان HTTPS URL مؤهل بشكل تام للمسار الممرّر:

$url = secure_url('user/profile');

$url = secure_url('user/profile', [1]);

()url

تنشئ الدالة url عنوان URL مؤهل بشكل تام للمسار الممرّر:

$url = url('user/profile');

$url = url('user/profile', [1]);

إذا لم يُوفّر أي مسار، تعيد الدالة url نسخة Illuminate\Routing\UrlGenerator:

$current = url()->current();

$full = url()->full();

$previous = url()->previous();

متنوعات

()abort

تطلق الدالة abort استثناء HTTP يظهر بمعالج الإستثناءات:

abort(403);

يمكنك أيضًاا توفير نص جواب الاستثناء والأجوبة المخصصة للترويسات:

abort(403, 'Unauthorized.', $headers);

()abort_if

تطلق الدالة abort_if استثناء HTTP إذا كانت نتيجة عبارة منطقية ممرّرة هي القيمة true:

abort_if(! Auth::user()->isAdmin(), 403);

مثل الدالة abort، يمكنك توفير نص جواب الاستثناء كمعامل ثالث و مصفوفة الأجوبة المخصصة للترويسات كمعامل رابع.

()abort_unless

تطلق الدالة abort_unless استثناء HTTP إذا كان نتيجة عبارة منطقية ممرّرة هي القيمة false:

abort_unless(Auth::user()->isAdmin(), 403);

مثل الدالة abort، يمكنك توفير نص جواب الاستثناء كمعامل ثالث و مصفوفة الأجوبة المخصصة للترويسات كمعامل رابع.

()app

تعيد الدالة app نسخة حاوي الخدمات:

$container = app();

يمكنك تمرير اسم صنف أو واجهة لتنفيذه من الحاوي:

$api = app('HelpSpot\API');

()auth

تعيد الدالة auth نسخة مُصادق (authentificator). يمكنك استعمال الدالة بدل الواجهة الساكنة Auth لسهولة العمل:

$user = auth()->user();

عند الحاجة، يمكنك تحديد أي نسخة حارس تريد استعمالها:

$user = auth('admin')->user();

()back

تنشئ الدالة back جواب HTML لإعادة التوجيه للمكان السابق للمستخدم:

return back($status = 302, $headers = [], $fallback = false);

return back();

()bcrypt

تجزّء الدالة brcypt القيمة المرّرة باستعمال Bcrypt. يمكنك استعمال الدالة كبديل عن الواجهة الساكنة Hash:

$password = bcrypt('my-secret-password');

()broadcast

تبث الدالة broadcast الحدث المرّر للمنصتات:

broadcast(new UserRegistered($user));

()blank

تتثبت الدالة blank من إذا كانت القيمة الممرّرة فارغة:

blank();

blank('   ');

blank(null);

blank(collect());

// true

blank(0);

blank(true);

blank(false);

// false

لعكس وظيفة الدالة blank، اطلع على الدالة filled.

()cache

تُستعمل الدالة cache لاسترجاع قيمة من التخزين المؤقت. إذا لم يكن المفتاح المرّر موجودًا، تعيد الدالة cache قيمة افتراضية:

$value = cache('key');

$value = cache('key', 'default');

يمكنك إضافة عناصر للتخزين المؤقت عبر تمرير ثنائي مفتاح \ قيمة للدالة cache. يجب عليك أيضًا تمرير عدد الدقائق أو المدة التي تبقى فيها القيمة صالحة في التخزين:

cache(['key' => 'value'], 5);

cache(['key' => 'value'], now()->addSeconds(10));

()class_uses_recursive

تعيد الدالة class_uses_recursive كل السمات (traits) التي يستعملها الصنف بما في ذلك السمات التي تستعملها الأصناف الآباء:

$traits = class_uses_recursive(App\User::class);

()collect

تنشئ لدالة collect نسخة مجموعة من القيم الممرّرة:

$collection = collect(['taylor', 'abigail']);

()config

تسترجع الدالة config قيمة متغير ضبط. يمكن الوصول إلى القيمة باستعمال صياغة "النقاط" التي تتضمّن اسم الملف و الخيار الذي تريد الوصول إليه. يمكن تحديد قيمة افتراضية تعيدها الدالة config إذا كان خيار الضبط غير موجود:

$value = config('app.timezone');

$value = config('app.timezone', $default);

يمكنك تعيين متغيرات ضبط وقت التشغيل عبر تمرير ثنائي مفتاح \ قيمة:

config(['app.debug' => true]);

()cookie

تنشئ الدالة cookie نسخة cookie جديدة:

$cookie = cookie('name', 'value', $minutes);

()csrf_field

تنشئ الدالة csrf_field حقل إدخال HTML مخفيًّا يحتوي قيمة الرمز csrf. مثلًا باستعمال صياغة Blade:قالب:csrf field()()csrf_token

تستردّ الدالة csrf_token قيمة رمز CSRF:

$token = csrf_token();

()dd

تُفرغ الدالة dd المتغيّر الممرّر وتنهي تنفيذ السكريبت:

dd($value);

dd($value1, $value2, $value3, ...);

إذا لم ترد إيقاف السكريبت، استخدم الدالة dump.

()decrypt

تفك الدالة decrypt تشفير القيمة الممرّرة باستعمال مشفّر Laravel:

$decrypted = decrypt($encrypted_value);

()dispatch

تُرسل الدالة dispatch المهمة الممرّرة للطابور:

dispatch(new App\Jobs\SendEmails);

()dispatch_now

تنفذ الدالة dispatch_now المهمة الممرّرة وتعيد قيمة التابع handle:

$result = dispatch_now(new App\Jobs\SendEmails);

()dump

تُفرغ الدالة dump المتغير الممرّر:

dump($value);

dump($value1, $value2, $value3, ...);

إذا أردت إيقاف التنفيذ بعد التفريغ استعمل الدالة dd.

ملاحظة : يمكنك استعمال الأمر dump-server لتلقي كل نداءات التفريغ وعرضهم في شاشة سطر الأوامر بدل المتصفح.

()encrypt

تشفّر الدالة encrypt القيمة الممرّرة باستعمال مشفّر Laravel:

$encrypted = encrypt($unencrypted_value);

()env

تستردّ الدالة env متغيّرات البيئة أو تعيد قيمة افتراضية:

$env = env('APP_ENV');

// تعيد production إذا كانت المتغيرات غير معدّة

$env = env('APP_ENV', 'production');

()event

تطلق الدالة event الأحداث للمنصتات:

event(new UserRegistered($user));

()factory

تنشئ الدالة factory منشئ نموذج منتج (model factory builder) للصنف والاسم والكمية المرّرة. يمكن استعمالها في الاختبار و في تعبئة قاعدة البيانات:

$user = factory(App\User::class)->make();

()filled

تعيد الدالة filled قيمة منطقية حول القيمة الممرّرة إن هي غير فارغة أم لا:

filled(0);

filled(true);

filled(false);

// true

filled();

filled('   ');

filled(null);

filled(collect());

// false

لعكس وظيفة الدالة، استعمل الدالة blank.

()info

تكتب الدالة info معلومات في ملف log:

info('Some helpful information!');

يمكن أيضًا تمرير مصفوفة من البيانات النصيّة:

info('User login attempt failed.', ['id' => $user->id]);

()logger

تُستعمل الدالة logger لكتابة رسائل في ملف الضبط في مستوى debug:

logger('Debug message');

يمكن أيضًا تمرير مصفوفة من البيانات النصيّة:

logger('User has logged in.', ['id' => $user->id]);

تعيد الدالة نسخة logger إذا لم تمرّر معاملات:

logger()->error('You are not allowed here.');

()method_field

تنشئ الدالة method_field حقل كتابة مخفي يحتوي قيمة طريقة HTTP في الاستمارة. مثلًا، باستعمال صياغة Blade:

<form method="POST">   قالب:method field('DELETE')</form>

()now

تنشئ الدالة now نسخة Illuminate\Support\Carbon للوقت الحالي:

$now = now();

()old

تسترجع الدالة old قيمة قديمة حُذفت من الجلسة:

$value = old('value');

$value = old('value', 'default');

()optional

تقبل الدالة optional معاملا وتسمح لك بالوصول إلى خصائصه، توابعه، أو كائناته . سيعيد الطلب القيمة null بدل إحداث خطأ إذا كانت القيمة الممرّرة null:

return optional($user->address)->street;

{!! old('name', optional($user)->name) !!}

تقبل الدالة أيضًا نداء Closure كمعامل ثاني. ينفَّذ المعامل الثاني إذا كانت قيمة المعامل الأول مخالفة لnull

return optional(User::find($id), function ($user) {

   return new DummyUser;

});

()policy

تستردّ الدالة policy نسخة policy لصنف ممرّر:

$policy = policy(App\User::class);

()redirect

تعيد الدالة redirect جواب HTTP لإعادة التوجيه أو تعيد نسخة الموجّه إذا نوديت دون معامل:

return redirect($to = null, $status = 302, $headers = [], $secure = null);

return redirect('/home');

return redirect()->route('route.name');

()report

تبلغ الدالة report عن وجود استثناء باستعمال التابع report من معالج الاستثناءات:

report($e);

()request

تعيد الدالة request نسخة الطلب الحالي أو تحصل على عنصر إدخال:

$request = request();

$value = request('key', $default);

()rescue

تنفّذ الدالة rescue  النطاق المغلق الممرّر Closure و تتلقى كل استثناء مطلق عند تنفيذه. تُرسل كل الاستثناءات للتابع report من معالج الاستثناءات لكن الدالة تكمل العمل:

return rescue(function () {

   return $this->method();

});

يمكنك تمرير معامل ثاني  للدالة escue يكون القيمة الافتراضية التي تعيدها في حال ظهور استثناء عند تنفيذ Closure:

return rescue(function () {

   return $this->method();

}, false);

return rescue(function () {

   return $this->method();

}, function () {

   return $this->failure();

});

()resolve

تحل الدالة resolve الصنف أو الواجهة الممرّرة باستعمال حاوي الخدمات:

$api = resolve('HelpSpot\API');

()response

تنشئ الدالة response نسخة جواب أو تحصل على نسخة من منتج الجواب:

return response('Hello World', 200, $headers);

return response()->json(['foo' => 'bar'], 200, $headers);

()retry

تحاول الدالة retry تنفيذ النداء الممرّر حتى تصل للحد الأقصى المحدد من المحاولات. إذا لم يطلق النداء أي استثناء، تعيد الدالة retry القيمة المعادة من النداء. إذا أطلق النداء استثناء، تعيد الدالة retry محاولة تنفيذه. إذا وصلت الدالة للحد الأقصى من المحاولات، تطلق الدالة retry الاستثناء:

return retry(5, function () {

  // المحاولة 5 مرات مع الإنتظار 100 جزء من الثانية بين المحاولات

}, 100);

()session

يمكن استعمال الدالة session لاسترداد أو تعيين قيم من الجلسة:

$value = session('key');

يمكنك تعيين قيم بتمرير ثنائي مفتاح \ قيمة للدالة:

session(['chairs' => 7, 'instruments' => 3]);

يعاد مخزن الجلسة (session store) إذا نوديت الدالة دون تمرير أي قيمة:

$value = session()->get('key');

session()->put('key', $value);

()tap

تقبل الدالة tap معاملين : قيمة عشوائية value$ والنطاق المغلق Closure. تمرّر القيمة للنطاق المغلق Closure ثم تعيدها الدالة tap. القيمة التي تعيدها Closure غير مهمة:

$user = tap(User::first(), function ($user) {

   $user->name = 'taylor';
   $user->save();

});

إذا لم تمرّر Closure يمكنك نداء أي تابع مع القيمة value$. تعيد الدالة دائما value$ مهما أعاد التابع المنادى. على سبيل المثال، التابع update من Eloquent يعيد عادة رقمًا لكن بإمكاننا إرغام التابع على إعادة النموذج نفسه عبر إضافة التابع update  للدالة tap:

$user = tap($user)->update([

   'name' => $name,
   'email' => $email,

]);

()today

تنشئ الدالة today نسخة Illuminate\Support\Carbon للتاريخ الحالي:

$today = today();

()thow_if

تطلق الدالة throw_if الاستثناء الممرّر إذا كانت نتيجة العبارة المنطقية الممرّرة true:

throw_if(! Auth::user()->isAdmin(), AuthorizationException::class);

throw_if(

   ! Auth::user()->isAdmin(),
   AuthorizationException::class,
   'You are not allowed to access this page'

);

()throw_unless

تطلق الدالة throw_unless الاستثناء الممرّر إذا كانت نتيجة العبارة المنطقية الممرّرة false:

throw_unless(Auth::user()->isAdmin(), AuthorizationException::class);

throw_unless(

   Auth::user()->isAdmin(),
   AuthorizationException::class,
   'You are not allowed to access this page'

);

()trait_uses_recursive

تعيد الدالة trait_uses_recursive كل السمات المستعملة من قبل سمة:

$traits = trait_uses_recursive(\Illuminate\Notifications\Notifiable::class);

()transform

تنفذ الدالة transform  النطاق المغلق Closure على قيمة ممرّرة إذا لم تكن فارغة وتعيد نتيجة النطاق المغلق:

$callback = function ($value) {

   return $value * 2;

};

$result = transform(5, $callback);

// 10

يمكن تمرير قيمة مبدئية أو Closure تعاد حين تكون القيمة الممرّرة فارغة:

$result = transform(null, $callback, 'The value is blank');

// The value is blank

()validator

تنشئ الدالة validator نسخة validator بالمعامل الممرّر. يمكن استعمال الدالة كبديل عن الواجهة الساكنة Validator لسهولة العمل:

$validator = validator($data, $rules, $messages);

()value

تعيد الدالة value القيمة الممرّرة، لكن إذا مرّرت نطاقًا مغلقًا، سينفذ وتعاد نتيجته:

$result = value(true);

// true

$result = value(function () {

   return false;

});

// false

()view

تستردّ الدالة view نسخة واجهة:

return view('auth.login');

()with

تعيد الدالة with القيمة الممرّرة. إذا مرّرت  نطاقًا مغلقًا Closure كمعامل ثاني للدالة، سينفذ وتعاد نتيجته:

$callback = function ($value) {

   return (is_numeric($value)) ? $value * 2 : 0;

};

$result = with(5, $callback);

// 10

$result = with(null, $callback);

// 0

$result = with(5, null);

// 5

مصادر

صفحة Helpers في توثيق Laravel الرسمي.