فصل دوم - راه‌ اندازی محیط توسعه لاراول

راه‌ اندازی محیط توسعه لاراول

بخشی از موفقیت PHP این است که پیدا کردن یک سرور وب که نتواند PHP را سرو کند، سخت است. با این حال، ابزارهای مدرن PHP به شرایط سخت‌گیرانه‌تری نسبت به گذشته نیاز دارند. بهترین روش برای توسعه لاراول این است که یک محیط سرور محلی و از راه دور یکسان برای کد خود ایجاد کنید و خوشبختانه، اکوسیستم لاراول ابزارهایی برای این کار دارد.

نیازمندی‌ های سیستم

تمامی مطالبی که در این فصل پوشش داده می‌شود، با ماشین‌های ویندوزی قابل انجام است، اما شما به ده‌ها صفحه دستورالعمل و نکات خاص نیاز خواهید داشت. این دستورالعمل‌ها و نکات خاص را به کاربران ویندوز واقعی می‌سپارم، بنابراین مثال‌های اینجا و در بقیه کتاب بر روی توسعه‌دهندگان Unix/Linux/macOS تمرکز خواهند داشت.

چه شما تصمیم بگیرید که وب‌سایت خود را با نصب PHP و سایر ابزارها روی ماشین محلی خود سرو کنید، چه محیط توسعه خود را از یک ماشین مجازی از طریق Vagrant یا Docker سرو کنید، یا به ابزاری مانند MAMP/WAMP/XAMPP تکیه کنید، محیط توسعه شما باید تمامی موارد زیر را نصب کرده باشد تا سایت‌های لاراول را سرو کند: 

• PHP >= 8.1

• XML PHP extension

• OpenSSL PHP extension

• Ctype PHP extension

• PDO PHP extension

• JSON PHP extension

• Mbstring PHP extension

• BCMath PHP extension

• Tokenizer PHP extension

 

کامپوزر

هر ماشینی که شما بر روی آن در حال توسعه هستید، باید کامپوزر به صورت سراسری نصب شده باشد. کامپوزر ابزاری است که در پایه بیشتر توسعه‌های مدرن PHP قرار دارد. این ابزار مدیر وابستگی‌ها برای PHP است، مشابه با NPM (Node Package Manager) برای Node یا RubyGems برای Ruby. اما مانند NPM، کامپوزر همچنین پایه‌گذار بسیاری از تست‌ها، بارگذاری اسکریپت‌های محلی، اسکریپت‌های نصب و خیلی موارد دیگر است. شما به کامپوزر نیاز خواهید داشت تا لاراول را نصب، به‌روزرسانی کرده و وابستگی‌های خارجی را وارد کنید.

محیط‌ های توسعه محلی

برای بسیاری از پروژه‌ها، میزبانی محیط توسعه با استفاده از ابزارهای ساده کافی خواهد بود. اگر شما قبلاً MAMP یا WAMP یا XAMPP را روی سیستم خود نصب کرده‌اید، احتمالاً این ابزارها برای اجرای لاراول کافی خواهند بود.

شما همچنین می‌توانید لاراول را با وب‌سرور داخلی PHP اجرا کنید. دستور php -S localhost:8000 -t public را از پوشه ریشه سایت لاراول خود اجرا کنید و وب‌سرور داخلی PHP سایت شما را در آدرس http://localhost:8000/ سرو خواهد کرد.

اما اگر می‌خواهید قدرت بیشتری در محیط توسعه خود داشته باشید (مانند دامنه‌های محلی مختلف برای هر پروژه، مدیریت وابستگی‌ها مانند MySQL و غیره)، بهتر است به سراغ ابزاری قوی‌تر از وب‌سرور داخلی PHP بروید.

لاراول پنج ابزار برای توسعه محلی ارائه می‌دهد: Artisan serve، Sail، Valet، Herd و Homestead. ما به هرکدام به طور خلاصه اشاره خواهیم کرد. اگر مطمئن نیستید که کدام را استفاده کنید، من شخصاً به کاربران مک Valet و برای بقیه Sail را پیشنهاد می‌کنم.

 

Artisan Serve

اگر پس از تنظیم لاراول، دستور php artisan serve را اجرا کنید، سایت شما را در آدرس http://localhost:8000 سرو می‌کند، همانطور که قبلاً با استفاده از وب‌سرور داخلی PHP تنظیم کرده بودیم. در اینجا هیچ چیز دیگری برای شما به صورت رایگان فراهم نمی‌شود، بنابراین تنها مزیت معنادار آن این است که به راحتی به یاد می‌ماند.

Laravel Sail

Sail ساده‌ترین راه برای شروع توسعه محلی لاراول به گونه‌ای است که برای همه سیستم‌عامل‌ها یکسان باشد. این ابزار با یک وب‌سرور PHP، پایگاه داده‌ها و مجموعه‌ای از امکانات دیگر همراه است که باعث می‌شود اجرای یک نصب لاراول واحد که برای همه توسعه‌دهندگان در پروژه شما یکسان باشد، بسیار آسان شود، صرف‌نظر از وابستگی‌های پروژه یا محیط‌های کاری توسعه‌دهندگان شما.

چرا من از Sail استفاده نمی‌کنم؟ زیرا برای انجام این کار از Docker استفاده می‌کند و Docker در macOS به اندازه‌ای کند است که من Valet را ترجیح می‌دهم. اما اگر شما تازه به لاراول وارد شده‌اید، به‌ویژه اگر از مک استفاده نمی‌کنید، Sail به طور عمدی به عنوان ساده‌ترین راه برای شروع ساخت اپلیکیشن‌های لاراول شما ایجاد شده است.

Laravel Valet

اگر شما از macOS استفاده می‌کنید (فریم‌ورک‌های غیررسمی برای ویندوز و لینوکس نیز وجود دارند)، Laravel Valet این امکان را به شما می‌دهد تا هر یک از اپلیکیشن‌های لاراول محلی خود (و بیشتر اپلیکیشن‌های استاتیک و مبتنی بر PHP دیگر) را بر روی دامنه‌های محلی مختلف سرو کنید.

شما باید چند ابزار را با استفاده از Homebrew نصب کنید، که مستندات نصب شما را راهنمایی می‌کند، اما از نصب اولیه تا سرو کردن اپلیکیشن‌ها تنها چند مرحله کوتاه وجود دارد.

Valet را نصب کنید — برای جدیدترین دستورالعمل‌های نصب به مستندات Valet مراجعه کنید — و آن را به یک یا چند دایرکتوری که سایت‌های شما در آنجا قرار دارند، اشاره کنید. من دستور valet park را از دایرکتوری ~/Sites اجرا کردم، جایی که همه اپلیکیشن‌های در حال توسعه خود را قرار می‌دهم. حالا شما فقط باید .test را به انتهای نام دایرکتوری اضافه کرده و آن را در مرورگر خود باز کنید.

Valet سرو کردن اپلیکیشن‌های لاراول را آسان می‌کند؛ می‌توانیم از دستور valet park برای سرو کردن تمام زیرپوشه‌ها در یک پوشه خاص به صورت {نام‌پوشه}.test، از دستور valet link برای سرو کردن تنها یک پوشه، از دستور valet open برای باز کردن مرورگر جهت نمایش دامنه سرو شده توسط Valet برای یک پوشه، از دستور valet secure برای سرو کردن سایت Valet با HTTPS، و از دستور valet share برای باز کردن تونل ngrok یا Expose برای به اشتراک گذاری سایت خود با دیگران استفاده کنیم.

Laravel Herd

Herd یک اپلیکیشن بومی macOS است که Valet و تمام وابستگی‌های آن را به عنوان یک نصب‌کننده واحد گردآوری می‌کند. در حالی که Herd به اندازه Valet CLI قابل تنظیم نیست، نیازی به کار با Homebrew، Docker یا هر مدیر وابستگی دیگری ندارد و این امکان را می‌دهد تا شما با ویژگی‌های اصلی Valet از طریق یک رابط گرافیکی راحت‌تر تعامل داشته باشید.

Laravel Homestead

Homestead ابزاری دیگر است که ممکن است بخواهید برای راه‌اندازی محیط توسعه محلی خود استفاده کنید. این یک ابزار پیکربندی است که بالای Vagrant (که ابزاری برای مدیریت ماشین‌های مجازی است) قرار دارد و یک تصویر ماشین مجازی پیش‌پیکربندی شده فراهم می‌کند که به طور کامل برای توسعه لاراول تنظیم شده و محیط تولید رایج‌تری را شبیه‌سازی می‌کند که بسیاری از سایت‌های لاراول در آن اجرا می‌شوند.

مستندات Homestead کامل و به‌طور مداوم به‌روزرسانی می‌شود، بنابراین اگر می‌خواهید بدانید چطور کار می‌کند و چطور آن را راه‌اندازی کنید، فقط به مستندات آن مراجعه کنید.

ایجاد یک پروژه جدید لاراول

دو روش برای ایجاد یک پروژه جدید لاراول وجود دارد که هر دو از خط فرمان اجرا می‌شوند. گزینه اول نصب ابزار نصب‌کننده لاراول به صورت سراسری (با استفاده از Composer) است؛ گزینه دوم استفاده از ویژگی create-project در Composer است.

شما می‌توانید جزئیات بیشتر در مورد هر دو گزینه را در صفحه مستندات نصب بیابید، اما من استفاده از ابزار نصب‌کننده لاراول را پیشنهاد می‌کنم.

نصب لاراول با ابزار نصب‌ کننده لاراول

اگر Composer را به صورت سراسری نصب کرده‌اید، نصب ابزار نصب‌کننده لاراول به سادگی با اجرای دستور زیر امکان‌پذیر است:

composer global require "laravel/installer"



پس از نصب ابزار نصب‌کننده لاراول، ایجاد یک پروژه جدید لاراول بسیار ساده است. فقط این دستور را از خط فرمان اجرا کنید:

laravel new projectName



این دستور یک زیرپوشه جدید به نام {projectName} در دایرکتوری فعلی شما ایجاد می‌کند و یک پروژه لاراول خام در آن نصب می‌کند.

 

نصب لاراول با ویژگی create-project در Composer

 همچنین ویژگی‌ای به نام create-project دارد که برای ایجاد پروژه‌های جدید با یک اسکلت خاص استفاده می‌شود. برای استفاده از این ابزار جهت ایجاد یک پروژه جدید لاراول، دستور زیر را اجرا کنید:

composer create-project laravel/laravel projectName



مثل ابزار نصب‌کننده، این دستور یک زیر پوشه جدید به نام {projectName} در دایرکتوری فعلی شما ایجاد می‌کند که حاوی یک نصب لاراول اسکلت آماده برای توسعه است.

 

نصب لاراول با Sail

اگر قصد دارید با Laravel Sail کار کنید، می‌توانید یک اپلیکیشن لاراول را نصب کرده و فرآیند نصب Sail را همزمان آغاز کنید. اطمینان حاصل کنید که Docker روی کامپیوتر شما نصب شده است، سپس دستور زیر را اجرا کنید و نام اپلیکیشن خود را به جای example-app قرار دهید:

curl -s "https://laravel.build/example-app" | bash



این دستور لاراول را در پوشه example-app زیر دایرکتوری فعلی شما نصب می‌کند و سپس فرآیند نصب Sail را آغاز می‌کند.

پس از اتمام این فرآیند نصب، به دایرکتوری جدید خود بروید و Sail را راه‌اندازی کنید:

cd example-app

./vendor/bin/sail up

 

نکته

بار اول که دستور sail up را اجرا کنید، زمان بیشتری از دیگر فرآیندهای نصب خواهد برد، زیرا باید تصویر اولیه Docker را بسازد.

ساختار دایرکتوری لاراول

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

app/

bootstrap/

config/

database/

public/

resources/

routes/

storage/

tests/

vendor/

.editorconfig

.env

.env.example

.gitattributes

.gitignore

artisan

composer.json

composer.lock

package.json

phpunit.xml

readme.md

vite.config.js



بیایید هر کدام از این‌ها را یکی یکی بررسی کنیم تا آشنایی بیشتری پیدا کنیم.

 

دایرکتوری‌ ها

دایرکتوری ریشه به طور پیش‌فرض شامل دایرکتوری‌های زیر است:

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

bootstrap
حاوی فایل‌هایی است که فریم‌ورک لاراول از آن‌ها برای راه‌اندازی هر بار که اجرا می‌شود استفاده می‌کند.

config
محل قرارگیری تمام فایل‌های پیکربندی.

database
جایی که مایگریشن‌ها، بذرها و کارخانه‌ها قرار دارند.

public
دایرکتوری‌ای که سرور به آن اشاره می‌کند وقتی که در حال سرو کردن وب‌سایت است. این دایرکتوری شامل index.php است که کنترلر ابتدایی است که فرآیند بوت‌استرپینگ را آغاز کرده و تمام درخواست‌ها را به درستی مسیردهی می‌کند. همچنین جایی است که فایل‌های عمومی مانند تصاویر، استایل‌ها، اسکریپت‌ها یا دانلودها قرار می‌گیرند.

resources
جایی که فایل‌هایی که برای اسکریپت‌های دیگر لازم هستند، قرار دارند. اینجا محل نگهداری نمای‌ها و (اختیاری) فایل‌های CSS و JavaScript منبع است.

routes
جایی که تمام تعریف‌های مسیرها قرار دارند، هم برای مسیرهای HTTP و هم برای مسیرهای "کنسول"، یا دستورات Artisan.

storage
جایی که کش‌ها، لاگ‌ها و فایل‌های سیستم کامپایل‌شده قرار دارند.

tests
جایی که تست‌های واحد و یکپارچه قرار دارند.

vendor
جایی که Composer وابستگی‌های خود را نصب می‌کند. این دایرکتوری از سیستم کنترل نسخه گیت حذف می‌شود (با علامت گیت-ایگنور) چون Composer به عنوان بخشی از فرآیند استقرار در هر سرور از راه دور اجرا می‌شود.

فایل‌ های آزاد

دایرکتوری ریشه همچنین شامل فایل‌های زیر است:
.editorconfig
 دستورات مربوط به استانداردهای کدنویسی لاراول را به ویرایشگر IDE/متن شما می‌دهد (مثلاً اندازه تورفتگی‌ها، مجموعه کاراکترها، و اینکه آیا فاصله‌های اضافی در انتهای خطوط حذف شوند یا نه).
.env و .env.example
 متغیرهای محیطی را مشخص می‌کنند (متغیرهایی که انتظار می‌رود در هر محیط متفاوت باشند و بنابراین در سیستم کنترل نسخه نگهداری نمی‌شوند). .env.example یک الگو است که هر محیط باید آن را کپی کرده و فایل .env خود را بسازد که از گیت حذف می‌شود.

.gitignore  و .gitattributes
فایل‌های پیکربندی گیت.
artisan
به شما این امکان را می‌دهد که دستورات Artisan را از خط فرمان اجرا کنید (برای جزئیات بیشتر به فصل ۸ مراجعه کنید).
composer.json و composer.lock
فایل‌های پیکربندی برای Composer؛ composer.json قابل ویرایش توسط کاربر است، اما composer.lock قابل ویرایش نیست. این فایل‌ها اطلاعات پایه‌ای درباره پروژه دارند و وابستگی‌های PHP آن را تعریف می‌کنند.
package.json
مشابه با composer.json، اما برای دارایی‌های فرانت‌اند و وابستگی‌های سیستم ساخت؛ به NPM می‌گوید کدام وابستگی‌های مبتنی بر جاوااسکریپت را بارگیری کند.
phpunit.xml
یک فایل پیکربندی برای PHPUnit، ابزاری که لاراول به‌طور پیش‌فرض برای تست استفاده می‌کند.
readme.md
یک فایل Markdown که مقدمه‌ای ساده از لاراول را ارائه می‌دهد. شما این فایل را در صورت استفاده از ابزار نصب لاراول نخواهید دید.
vite.config.js
فایل پیکربندی (اختیاری) برای Vite. این فایل به سیستم ساخت شما می‌گوید چگونه دارایی‌های فرانت‌اند را کامپایل و پردازش کند.

پیکربندی

تنظیمات اصلی اپلیکیشن لاراول شما—مانند تنظیمات اتصال به دیتابیس، تنظیمات صف‌ها و ایمیل‌ها—در فایل‌هایی در دایرکتوری config قرار دارند. هر یک از این فایل‌ها یک آرایه PHP را باز می‌گردانند و هر مقدار در این آرایه از طریق یک کلید پیکربندی که شامل نام فایل و تمام کلیدهای فرزند آن است، قابل دسترسی است. این کلیدها با نقطه (.) از هم جدا می‌شوند.

به عنوان مثال، اگر فایلی به نام config/services.php به شکل زیر داشته باشید:

// config/services.php

<?php

return [

    'sparkpost' => [

        'secret' => 'abcdefg',

    ],

];



شما می‌توانید این متغیر پیکربندی را با استفاده از config('services.sparkpost.secret') دسترسی پیدا کنید.

متغیرهای پیکربندی که باید برای هر محیط خاص باشند (و بنابراین نباید به سیستم کنترل نسخه اضافه شوند)، در فایل‌های .env قرار می‌گیرند. به عنوان مثال، اگر بخواهید از کلید API متفاوت برای Bugsnag در هر محیط استفاده کنید، می‌توانید فایل پیکربندی را به گونه‌ای تنظیم کنید که از فایل .env مقدار آن را دریافت کند:

// config/services.php

<?php

return [

    'bugsnag' => [

        'api_key' => env('BUGSNAG_API_KEY'),

    ],

];



در اینجا از تابع کمکی env() برای دریافت مقدار از فایل .env استفاده می‌شود. حالا شما باید آن کلید را به فایل .env (تنظیمات برای این محیط) و .env.example (الگو برای تمام محیط‌ها) اضافه کنید:

# در فایل .env

BUGSNAG_API_KEY=oinfp9813410942

# در فایل .env.example

BUGSNAG_API_KEY=

 

استفاده از env() خارج از فایل‌های پیکربندی

برخی از ویژگی‌های لاراول، از جمله ویژگی‌های کش و بهینه‌سازی، در صورتی که از فراخوانی‌های env() خارج از فایل‌های پیکربندی استفاده کنید، در دسترس نخواهند بود.
بهترین روش برای استفاده از متغیرهای محیطی، تنظیم آیتم‌های پیکربندی برای هر چیزی است که می‌خواهید خاص هر محیط باشد. این آیتم‌های پیکربندی متغیرهای محیطی را می‌خوانند و سپس می‌توانید از این متغیرهای پیکربندی در هر جای اپلیکیشن خود استفاده کنید:

// config/services.php
return [
    'bugsnag' => [
        'key' => env('BUGSNAG_API_KEY'),
    ],
];

// در کنترلر یا هر جای دیگر
$bugsnag = new Bugsnag(config('services.bugsnag.key'));

فایل .env

در اینجا نگاهی سریع به محتوای پیش‌فرض فایل .env داریم. کلیدهای دقیق ممکن است بسته به نسخه لاراول شما متفاوت باشند، اما به طور کلی مشابه آنچه که در Example 2-1 آمده است، خواهند بود.

APP_NAME=Laravel

APP_ENV=local

APP_KEY=

APP_DEBUG=true

APP_URL=http://localhost




LOG_CHANNEL=stack

LOG_DEPRECATIONS_CHANNEL=null

LOG_LEVEL=debug




DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=laravel

DB_USERNAME=root

DB_PASSWORD=




BROADCAST_DRIVER=log

CACHE_DRIVER=file

FILESYSTEM_DISK=local

QUEUE_CONNECTION=sync

SESSION_DRIVER=file

SESSION_LIFETIME=120




MEMCACHED_HOST=127.0.0.1




REDIS_HOST=127.0.0.1

REDIS_PASSWORD=null

REDIS_PORT=6379




MAIL_MAILER=smtp

MAIL_HOST=mailpit

MAIL_PORT=1025

MAIL_USERNAME=null

MAIL_PASSWORD=null

MAIL_ENCRYPTION=null

MAIL_FROM_ADDRESS="hello@example.com"

MAIL_FROM_NAME="${APP_NAME}"




AWS_ACCESS_KEY_ID=

AWS_SECRET_ACCESS_KEY=

AWS_DEFAULT_REGION=us-east-1

AWS_BUCKET=

AWS_USE_PATH_STYLE_ENDPOINT=false




PUSHER_APP_ID=

PUSHER_APP_KEY=

PUSHER_APP_SECRET=

PUSHER_HOST=

PUSHER_PORT=443

PUSHER_SCHEME=https

PUSHER_APP_CLUSTER=mt1




VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"

VITE_PUSHER_HOST="${PUSHER_HOST}"

VITE_PUSHER_PORT="${PUSHER_PORT}"

VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"

VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"



من وارد جزئیات تمام این متغیرها نمی‌شوم، چون بسیاری از آن‌ها فقط گروه‌هایی از اطلاعات احراز هویت برای سرویس‌های مختلف (Pusher، Redis، DB، Mail) هستند. اما دو متغیر محیطی مهم وجود دارد که باید در مورد آن‌ها بدانید:

APP_KEY
یک رشته تصادفی است که برای رمزنگاری داده‌ها استفاده می‌شود. اگر این مقدار خالی باشد، ممکن است با خطای "No application encryption key has been specified." مواجه شوید. در این صورت، کافی است دستور زیر را اجرا کنید:

php artisan key:generate

 

و لاراول یک کلید برای شما تولید خواهد کرد.

APP_DEBUG
یک مقدار بولی است که تعیین می‌کند آیا کاربران این نسخه از برنامه شما باید خطاهای اشکال‌زدایی را ببینند یا نه. این برای محیط‌های لوکال و استیجینگ مناسب است، اما در محیط پروداکشن باید غیرفعال باشد تا اطلاعات حساس نمایش داده نشوند.

بقیه تنظیمات غیر از احراز هویت (مثل BROADCAST_DRIVER، QUEUE_CONNECTION و غیره) دارای مقادیر پیش‌فرض هستند که تا حد امکان به کمترین وابستگی به سرویس‌های خارجی نیاز دارند، که برای شروع کار بسیار مناسب است.

وقتی اولین برنامه لاراول خود را شروع می‌کنید، تنها تغییری که احتمالاً می‌خواهید ایجاد کنید، تنظیمات پایگاه داده است. من از Laravel Valet استفاده می‌کنم، بنابراین DB_DATABASE را به نام پروژه‌ام تغییر می‌دهم، DB_USERNAME را به root و DB_PASSWORD را به رشته خالی تغییر می‌دهم:

 

DB_DATABASE=myProject

DB_USERNAME=root

DB_PASSWORD=



سپس یک پایگاه داده با همان نام پروژه‌ام در کلاینت MySQL خود ایجاد می‌کنم و آماده شروع کار هستم.

 

راه‌اندازی و شروع به کار

حال شما با یک نصب ساده لاراول آماده به کار هستید. دستورهای زیر را اجرا کنید:

git init
git add .
git commit -m "Initial commit"

 

و اگر از Valet استفاده می‌کنید، می‌توانید دستورات زیر را اجرا کنید و بلافاصله سایت خود را در مرورگر مشاهده کنید:
valet park

سپس به آدرس http://myProject.test در مرورگر خود مراجعه کنید و سایت لاراول شما در حال اجرا خواهد بود!

laravel new myProject && cd myProject && valet open


هر بار که پروژه جدیدی شروع می‌کنم، این مراحل را انجام می‌دهم:

laravel new myProject
cd myProject
git init
git add .
git commit -m "Initial commit"

تمام سایت‌های خود را در پوشه ~/Sites نگهداری می‌کنم که آن را به عنوان دایرکتوری اصلی Valet تنظیم کرده‌ام، بنابراین در این مورد، پروژه‌ی myProject.test به طور آنی در مرورگر من قابل دسترس خواهد بود بدون اینکه کار اضافی انجام دهم. می‌توانم فایل .env را ویرایش کرده و آن را به یک پایگاه داده خاص هدایت کنم، آن پایگاه داده را در اپلیکیشن MySQL خود اضافه کنم و آماده شروع به کدنویسی باشم.

تست‌ نویسی

در هر فصل بعدی این کتاب، بخش "Testing" در انتهای فصل به شما نشان می‌دهد که چگونه برای ویژگی یا ویژگی‌هایی که پوشش داده شده‌اند تست بنویسید. چون این فصل ویژگی قابل تستی را پوشش نمی‌دهد، بیایید سریعاً در مورد تست‌ها صحبت کنیم. (برای یادگیری بیشتر در مورد نوشتن و اجرای تست‌ها در لاراول، به فصل 12 مراجعه کنید.)
لاراول به صورت پیش‌فرض PHPUnit را به عنوان وابستگی وارد کرده و به گونه‌ای پیکربندی شده است که تست‌ها را در هر فایلی که در پوشه tests قرار دارد و نام آن با Test.php تمام می‌شود، اجرا کند (برای مثال، tests/UserTest.php).
بنابراین، ساده‌ترین راه برای نوشتن تست‌ها، ایجاد یک فایل در پوشه tests با نامی است که با Test.php تمام شود. و ساده‌ترین راه برای اجرای آن‌ها این است که از خط فرمان (در ریشه پروژه) دستور زیر را اجرا کنید:
./vendor/bin/phpunit

اگر هر تستی به دسترسی به پایگاه داده نیاز داشته باشد، مطمئن شوید که تست‌ها را از ماشینی که پایگاه داده شما در آن میزبان است اجرا می‌کنید—بنابراین اگر پایگاه داده را در Vagrant میزبانی می‌کنید، باید به سرور Vagrant خود SSH بزنید و تست‌ها را از آنجا اجرا کنید. دوباره، می‌توانید در مورد این موضوعات و موارد بیشتر در فصل 12 یاد بگیرید.
همچنین، برخی از بخش‌های تست‌نویسی از دستور زبان و ویژگی‌های تستی استفاده می‌کنند که ممکن است در ابتدا برای شما آشنا نباشد. اگر کدی در بخش‌های تست‌نویسی برای شما مبهم است، می‌توانید آن را رد کنید و بعد از خواندن فصل تست به آن بازگردید.

خلاصه

از آنجایی که لاراول یک فریمورک PHP است، سرویس‌دهی آن به صورت محلی بسیار ساده است. لاراول همچنین سه ابزار برای مدیریت توسعه محلی شما فراهم می‌کند: Sail، یک تنظیمات Docker؛ Valet، یک ابزار ساده برای macOS؛ و Homestead، یک تنظیمات از پیش پیکربندی شده Vagrant. لاراول بر پایه Composer است و می‌تواند با این ابزار نصب شود و به طور پیش‌فرض شامل مجموعه‌ای از پوشه‌ها و فایل‌ها است که هم‌راستای با کنوانسیون‌های آن و ارتباطش با سایر ابزارهای متن‌باز هستند.