پیکربندی در پوشه config/

📁 config/app.php

  • تنظیمات کلی برنامه مانند:

    • نام برنامه (APP_NAME)

    • ناحیه زمانی (timezone) موقعیت زمانی را مشخص می کنیم که برای مثال در کشور ایرانAsia/Tehranست می کنیم

    • زبان پیش‌فرض (locale) در مسیرresources/langمی توانیم یک پوشه دیگر به نامfaایجاد کرده تا در آن پیغام ها و متون فارسی را تایپ کنیم تا در برنامه از آنها استفاده کنیم. به طور مثال یک کاربرد آن در فارسی سازی پیغام های اعتبارسنجی فرم ها می باشد. مقدار این آیتم راfaکه همنام آن پوشه که ایجاد کردیم ست میکنیم

    • سرویس‌ دهندگان (providers) و aliasها

📁 config/auth.php

  • تنظیمات احراز هویت:

    • guardها (مثل web و api)

    • provider کاربران

    • مدل User (مثلاً: App\Models\User)

📁 config/cache.php

  • تنظیمات کش (Cache):

    • نوع کش (file, redis, database)

    • مسیر ذخیره فایل‌های کش در صورت استفاده از file

📁 config/database.php

  • تنظیمات پایگاه داده:

    • اتصال به MySQL, SQLite, PostgreSQL, SQL Server

    • تنظیمات Redis (برای کش یا صف‌ها)

📁 config/filesystems.php

  • مدیریت فایل‌ها و دیسک‌ها:

    • تعریف دیسک‌های local، public، s3

    • تنظیمات آدرس‌ها و مسیرهای ذخیره‌سازی فایل‌ها

📁 config/logging.php

  • تنظیمات لاگ:

    • نوع لاگر (single, daily, stack, syslog)

    • مسیر لاگ‌ها

    • سطح لاگ (debug, error, info, ...)

📁 config/mail.php

  • تنظیمات ارسال ایمیل:

    • سرویس‌دهنده (SMTP، Mailgun، SES)

    • پورت، نام فرستنده، احراز هویت

📁 config/queue.php

  • تنظیمات صف‌ها:

    • درایور (sync, database, redis, beanstalkd, sqs)

    • اتصال به Redis یا پایگاه داده برای مدیریت صف

📁 config/services.php

  • کلیدها و APIهای سرویس‌های خارجی:

    • Mailgun، Stripe، Slack، AWS و غیره

    • اغلب از فایل .env خوانده می‌شوند

📁 config/session.php

  • تنظیمات مربوط به نشست کاربر:

    • نوع ذخیره‌سازی (file, cookie, database, redis)

    • زمان انقضا، رمزنگاری، دامنه‌ها

پیکره بندی فایل .env

فایل .env در ریشه پروژه قرار دارد و حاوی تنظیمات محیطی است که می‌توانند در محیط‌های مختلف (محلی، تولید، تست) متفاوت باشند. برای مثال: پیکربندی محیطی با فایل .env

APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:...
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

debug:اگر مقدار آن راtrueست کنید برنامه در مدdevelopmentخواهد بود و خطاهای برنامه نشان داده می شود و اگرfalseباشد در مدproductionمی باشد و مناسب برایpublishو استفاده نهایی برنامه هست.


url:آدرسurlپروژه را در اینجا ست میکنیم مثالhttp://localhost/laravel/public :timezoneموقعیت زمانی را مشخص می کنیم که برای مثال در کشور ایرانAsia Tehranست میکنیم.


locale:در مسیرresources/langمی توانیم یک پوشه دیگر به نامfaایجاد کرده تا در آن پیغام ها و متون فارسی را تایپ کنیم تا در برنامه از آنها استفاده کنیم. به طور مثال یک کاربرد آن در فارسی سازی پیغام های اعتبارسنجی فرم ها می باشد. مقدار این آیتم راfaکه همنام آن پوشه که ایجاد کردیم ست میکنیم.


fallback_locale:در صورتی کهlocaleموردنظر برای آن رشته موجود نبود از اینlocaleاستفاده شود.


key:کلید برنامه که یک رشته تصادفی هست و در رمزنگاری های برنامه توسط الراول مورد استفاده قرار می گیرد. نحوه ست کردن آن را در پست قبلی توضیح دادم بهتراست مقدارAPP_KEYرا هم با تایپ دستور زیر در ترمینال تغییر دهیم:


php artisan key:generate

پیکره بندی لاراول

لاراول از دو مکان اصلی برای تنظیمات استفاده می‌کند:

  1. فایل .env: تنظیمات محیطی مانند پایگاه داده، کش، ایمیل و... در این فایل قرار می‌گیرند.

  2. پوشه config/: تنظیمات پیشرفته‌تر و ساختاریافته‌تر در این پوشه قرار دارند.

ساختار دایرکتوری‌های اصلی لاراول

📁 ساختار دایرکتوری‌های اصلی

app/ کدهای اصلی برنامه شما

حاوی کنترلرها، مدل‌ها، درخواست‌ها، روترها، رویدادها، دستورات Artisan و سرویس‌ها است.

زیرشاخه‌های مهم شامل Http/، Console/، Providers/ و Jobs/ هستند.

bootstrap/

شامل فایل app.php برای راه‌اندازی لاراول و پوشه cache/ برای کش‌های مختلف است.
ارتباطی با bootstrap در css ندارد

config/

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

database/

شامل مهاجرت‌ها (migrations/)، کارخانه‌ها (factories/) و داده‌های اولیه (seeders/) است.

public/

شامل فایل index.php به عنوان نقطه ورود، فایل‌های CSS، JavaScript، تصاویر و فایل .htaccess است.

resources/

شامل نماها (views/)، فایل‌های زبان (lang/) و منابع خام مانند Sass، LESS و JavaScript است.

routes/

شامل فایل‌های web.php، api.php، console.php و channels.php برای تعریف مسیرهای وب، API، دستورات کنسول و کانال‌های پخش رویداد است.

storage/

شامل کش‌ها، فایل‌های لاگ، فایل‌های کامپایل‌شده Blade و فایل‌های آپلودی است.

پوشه app/public/ برای ذخیره فایل‌های عمومی مانند آواتارها استفاده می‌شود.

tests / تست‌ها

شامل تست‌های واحد (Unit/) و ویژگی‌ها (Feature/) است.

می‌توانید از PHPUnit یا Pest برای اجرای تست‌ها استفاده کنید.

vendor/ وابستگی‌ها

شامل پکیج‌های نصب‌شده از طریق Composer است.

📄 فایل‌های مهم در ریشه پروژه

.env تنظیمات محیطی مانند اطلاعات اتصال به پایگاه داده و کلیدهای API.

.gitignore فایل‌هایی که نباید در کنترل نسخه Git قرار گیرند.

artisan دستورات خط فرمان لاراول.

composer.json تعریف وابستگی‌ها و پیکربندی‌های Composer.

phpunit.xml پیکربندی PHPUnit برای تست‌ها.

webpack.mix.js پیکربندی برای کامپایل دارایی‌ها با استفاده از Laravel Mix.

نصب لاراول

نکات مربوط به نصب لاراول

  1. لاراول یک فریم ورک php است بنابراین باید در بستر php اجرا شود برای این کار میتوانیم از xamp یا wamp استفاده کنیم
  2. بهتر است بعد از نصب wamp فریم ورک را در پوشه www نصب کنیم

لاراول با پکیچ laravel/laravel در مخزن وجود دارد بنابراین میتوانیم با کامپوزر به راحتی بدون درگیر بودن برای وابستگی ها لازم ان را با دستور composer create-project laravel/laravel نام پروژه نصب کنیم

نکته :برای اجرای کامپور میتوانیم از محیط cmd ویندوز یا bash استفاده کنیم

composer create-project laravel/laravel myProject

با اجرای دستور بالا در مسیر مشخص شده یک پوشه با نامه myproject ایجاد خواهد شد و تمامی بسته های لازم در ان نصب خواهند شد

بهتر است مسیر را به www موجود در پوشه Wamp تغییر دهیم

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

php artisan serve

ساختار پایه‌ای پکیج‌های PHP برای composer

هر پکیج PHP در اکوسیستم کامپوزر باید از این ساختار پیروی کند:

Vendor/Package

۱. Vendor Name (نام شرکت)

• نشان‌دهنده هویت منتشرکننده پکیج است
• انواع رایج:

  • نام سازمان (مثلاً laravel برای لاراول)

  • نام کاربری توسعه‌دهنده (مثلاً fzaninotto برای Faker)

  • نام دامنه معکوس (مثلاً com-github برای پکیج‌های GitHub)

۲. Package Name (نام پکیج)

• باید تنشاندهنده عملکرد پکیج باشد
• انواع متداول:

  • نام فریمورک (laravel, symfony)

  • نام عملکردی (http-client, database)

  • نام کتابخانه (monolog, phpunit)

مزایای ساختار نامگذاری Vendor/Package در پکیج‌های PHP

1. جلوگیری از تداخل نام‌ها (Name Collision Prevention)

  • مثال: دو توسعه‌دهنده می‌توانند پکیج logger بسازند:

    • monolog/monolog (کتابخانه معروف لاگینگ)

    • acme/logger (پکیج اختصاصی یک شرکت)

  • مزیت: هر پکیج با ترکیب vendor/package منحصربه‌فرد می‌شود.

2. سازماندهی سلسله‌مراتبی (Hierarchical Organization)

هر شرکت پکیچ های خود را بصورت زیرشاخه ایجاد میکند

دستور composer create-project  

این دستور برای ایجاد یک پروژه جدید بر اساس یک پکیج پایه (مثل فریمورک لاراول) استفاده می‌شود و تمام وابستگی‌ها را به صورت خودکار نصب می‌کند.

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

[--گزینه‌ها] [نسخه]  <نام-پوشه-مقصد> <نام-پکیج/پروژه> composer create-project   

🔹 پارامترهای اصلی:

نام-پکیج/پروژهنام پکیج پایه درPackagistlaravel/laravel
نام-پوشه-مقصدنام پوشه جدید برای پروژهmy-project
نسخهمحدوده نسخه مورد نظر (اختیاری)"11.*"

composer چیست

تعریف : composer یک ابزار برای مدیریت وابستگی پکیج ها در php است با استفاده از composer میتوانیم بسته های لازم در پروژه را تعریف کنیم تا composer انها رانصب یا برورسانی کند.
نکته: composer پکیج های لازم را در پوشه vendor پروژه ذخیره میکند
این تعریف درون فایل composer.js با فرمت زیر انجام میشود

نمونه فایل کامپوزر
{
"require": {
"guzzlehttp/guzzle": "^7.0"
}
}

چرا به کامپوزر نیاز داریم؟

1-نصب و بروز رسانی خودکار کتابخانه ها
فریمورک لاراول مجموعه ای از کتابخانه های مختلف است در صورتیکه بخواهیم هریک را بصورت دستی نصب و تنظیم نماییم کار بسیار سخت خواهد شد اما -کامپوزر براحتی تمامی کتابخانه ها را نصب و بروز رسانی میکند

2-بارگذاری خودکار کلاس‌ها (Autoloading)
قبلا از کامپوزر باید برای دسترسی به هر کلاس فایل مربوط به ان را require میکردیم اما با کامپوزر کافیست ابتدای هر فایل دستور require 'vendor/autoload.php' را بنویسیم تا در صورت نیاز کلای خودکار لود شود

✅ دیگر نیازی به require دستی نیست!

*استفاده از composer
برای استفاده از composer نیاز به یک فایل composer.js داریم تا پکیج های لازم در پروژه بهمراه وابستگی های انها را در ان درج کنیم یا میتوان از دستور composer init استفاده کرد این دستور فایل composer.js را ایجاد میکند

۱. دستورات پایه و ضروری

دستور توضیح

composer init ایجاد فایل composer.json جدید (راه‌اندازی پروژه)

composer install نصب تمام وابستگی‌های پروژه (براساس composer.lock)

composer update به‌روزرسانی تمام پکیج‌ها به آخرین نسخه سازگار

composer require نام-پکیج افزودن یک پکیج جدید به پروژه

composer remove نام-پکیج حذف یک پکیج از پروژه

composer dump-autoload به‌روزرسانی Autoloader (حل مشکلات کلاس‌ها)

۲. دستورات پیشرفته

دستور توضیح

composer create-project نام-پکیج/پروژه نصب یک پروژه آماده (مثل لاراول)

composer global require نام-پکیج نصب پکیج به صورت سراسری (مثل laravel/installer)

composer show نمایش لیست پکیج‌های نصب‌شده

composer search نام-پکیج جستجوی پکیج در Packagist

composer outdated بررسی پکیج‌های نیازمند به‌روزرسانی

composer validate بررسی صحت فایل

لاراول چیست

لاراول (Laravel) یک فریم‌ورک PHP محبوب، مدرن و اپن‌سورس برای توسعه اپلیکیشن‌های وب است که با شعار "هنر برنامه‌نویسی" (The PHP Framework For Web Artisans) ارائه شده است.

🔥 ویژگی‌های کلیدی لاراول:

  1. سینتکس ساده و خوانا (برخلاف پیچیدگی‌های PHP خام)

  2. سیستم مسیریابی (Routing) پیشرفته

  3. ORM قدرتمند Eloquent برای کار با دیتابیس

  4. سیستم Blade برای تمپلیت‌نویسی

  5. مهاجرت (Migrations) و سیدر (Seeders) دیتابیس

  6. احراز هویت (Authentication) داخلی

  7. کتابخانه‌های داخلی مانند Cashier (برای پرداخت)، Horizon (برای صف‌ها) و...

🚀 چرا لاراول محبوب است؟

سرعت توسعه بالا (با ابزارهایی مثل Artisan CLI)
امنیت قوی (حفاظت در برابر SQL Injection، XSS، CSRF و...)
جامعه بزرگ توسعه‌دهندگان
پکیج‌های آماده (مثل Laravel Breeze, Jetstream, Sanctum)
پشتیبانی از معماری MVC