نحوه‌ی ایجاد Helper شخصی در لاراول و فعال‌سازی آن روی سرورهای بدون دسترسی SSH

قصد دارم یک Helper شخصی در لاراول ایجاد کنم که اعداد فارسی و عربی را به اعداد انگلیسی تبدیل کند. پس باید Helper خود را در app ایجاد کنم. من ترجیح می‌دهم Helper خود را به این شکل در مسیر مربوطه ایجاد کنم:

app/Helpers/Helpers.php

حالا داخل فایل هلپر ایجاد شده‌ی بالا، فانکشن مورد نظرم را قرار می‌دهم:

<?php

if (!function_exists('toEnNumber')) {
      function toEnNumber($input)
      {
            $replace_pairs = array(
                  '۰' => '0', '۱' => '1', '۲' => '2', '۳' => '3', '۴' => '4', '۵' => '5', '۶' => '6', '۷' => '7', '۸' => '8', '۹' => '9',
                  '٠' => '0', '١' => '1', '٢' => '2', '٣' => '3', '۴' => '4', '۵' => '5', '۶' => '6', '٧' => '7', '٨' => '8', '٩' => '9'
            );

            return strtr($input, $replace_pairs);
      }
}

حالا باید کاری کنم که بتوانم از این هلپر و فانکشن مربوطه در تمام پروژه‌ی خود استفاده کنم. یکی از ساده‌ترین راه‌های این است که در فایل composer.json، فایل خود را معرفی کنم. پس ابتدا در این فایل قسمت زیر را پیدا می‌کنم:

"autoload": {
	"psr-4": {
		"App\\": "app/"
	},
	"classmap": [
		"database/seeds",
		"database/factories"
	]
},

و در نهایت آن را به شکل زیر و با توجه به نحوه‌ی ایجاد هلپرم ویرایش می‌کنم:

"autoload": {
	"files": [
		"app/Helpers/Helpers.php"
	],
	"psr-4": {
		"App\\": "app/"
	},
	"classmap": [
		"database/seeds",
		"database/factories"
	]
},

در نهایت کافی است دستور زیر را اجرا کنم و کار تمام است:

composer dump-autoload

تغییرات اعمال شده و در هر جای پروژه تابع ایجاد شده را صدا بزنم، عمل خواهد کرد.

نکته: به بزرگی و کوچکی حروف دقت شود. ممکن است در ویندوز مشکلی پیش نیاید، اما در لینوکس می‌تواند دردسرساز باشد.

حالا شاید قصد داشته باشیم پروژه‌ی خود را به Host اشتراکی که در آن دسترسی به SSH نیز نداریم، انتقال دهیم. راه چاره چیست؟

اگر کل پروژه را انتقال دهیم که مشکلی نیست. اما اگر قبلاً پروژه وجود داشته و قصد به روز رسانی آن را داریم، کافی است طبق موارد بالا هلپر را ایجاد کرده و فایل composer.json را نیز ویرایش کنیم. سپس به دلیل اینکه امکان اجرای composer dump-autoload را نداریم، دو فایل موجود در پوشه‌ی vendor/composer را به روزرسانی کنیم:

autoload_classmap.php

autoload_static.php

کار تمام است و پروژه باید به درستی اجرا شده و تابع یا به اصطلاح Helperهای ما هم سمت کنترلر و هم ویو قابل استفاده باشند.

درباره نویسنده: احسان

مطالب زیر را حتما بخوانید