سلام
یکی از ویژگیهای فریمورکها، قابلیت اضافه کردن کلاسها و کتابخانههاییست که توسط خودتون یا فرد دیگری نوشته شده. لاراول تو این زمینه دستتونو کاملا باز گذاشته.
یکی از اشکال این کتابخونهها یا کلاسها پکیجها هستند که در آینده در موردشون بیشتر صحبت میکنیم. ولی امروز می خواهیم در مورد اضافه کردن کلاسهای دم دستی و یا Helperها به Laravel صحبت کنیم.
فرض کنید یه سری تابع و متد داریم که برای راحتتر شدن کارمون و تمیزکاری اونارو یه جا بنویسم و بعد ازشون استفاده کنیم. راحتترین حالت ممکن اینه که بریناون تابعها رو به فایل route.php, filter.php, start.php و یا هر فایل دیگهای که موقع اجرای لاراول مورد استفاده هستند بنویسم و و در جاهای دیگه ازشون استفاده کنیم. ولی این کار کدمونو کثیف و نامرتب میکنه.
برای افزودن یک کلاس Helper به این ترتیب عمل میکنیم:
ابتدا یک دایرکتوری به دایرکتوری app اضافه میکنیم مثلن به اسم helpers:
mkdir laravel/app/helpers
بعد از اون یه فایل php داخل دایرکتوری مذکور ایجاد کرده و هر اسمی خواستیم روش میذاریم، فقط یادتون باشه بعدن با این اسم کار داریم. مثلن یه فایل میسازیم به اسم Helper.php
بعد از اضافه کردن فایل داخل اون شروع میکنیم به نوشتن متدهامون. یادتون باشه اون فایل Helper.php داخلش یه کلاس به همین نام باید باشه اونم از نوع static، به این صورت:
<?php
class Helper {
public static helloWorld() {
return "hello world";
}
}
هر چندتا متد خاصتین میتونین توش ایجاد کنید ولی بازم یادتون باشه باید همشون از نوع static باشن.
حالا تو هر جای پروژهتون میتونید به این شکل از کلاس Helperتون استفاده کنید، مثلن:
echo Helper::helloWorld();
ولی موقع اجرا میبینید که بهتون اخطار میده که همچین کلاسی وجود نداره. خب درسته چون ما این کلاسمونو داخل پروژه load نکردیم. برای این کار فایل composer.json اصلی لاراولو باز میکنیم و آدرس فولدر Helperمون رو در قسمت autoload -> classmap اضافه میکنیم. مثل این:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/helpers"
]
بعد از اضافه کردن و ذخیره کرده فایل composer.json، ترمینالو باز کرده( جایی که فایل composer.json وجود داره) و عبارت زیر را وارد میکنیم:
composer dump-autload
به همین راحتی الان میتونید از Helperتون تو پروژهتون به راحتی استفاده کنید و یادتون باشه از لاراول لذت ببرین.