Tarkibga o'tish

2 β€” O'rnatish va muhit

⬅️ Oldingi: 01 β€” Laravel nima va nega kerak? Β· 🏠 README Β· Keyingi: 03 β€” Routing β€” marshrutlash ➑️

Bu bobda: Laravel bilan ishlash uchun kerakli muhitni β€” PHP 8.4, Composer va bazani tayyorlaymiz; loyihani ikki xil yo'l bilan yaratamiz (composer create-project va laravel new); php artisan serve bilan ishga tushiramiz; slim (11+) loyiha strukturasini papka-papka aylanib chiqamiz; .env fayli, APP_KEY va sozlamalarning .env -> config -> ilova oqimini tushunamiz; artisan buyruqlar vositasi bilan tanishamiz va birinchi sahifani o'z qo'limiz bilan o'zgartiramiz.


Muammo

1-bobda Laravel nima ekanini va nega kerakligini bildik. Endi tabiiy savol tug'iladi: "Yaxshi, qayerdan boshlayman? Qaysi tugmani bosaman?"

Sof PHP'da hammasi oddiy edi: bitta index.php yaratasiz, brauzerda ochasiz β€” tamom. Laravel'da esa bitta fayl emas, butun bir tizim β€” yuzlab fayl, papkalar, sozlamalar bir-biriga bog'langan. Bu ko'pchilikni qo'rqitadi: "Bu murakkab loyihani qanday o'rnataman? Kompyuterimga nima kerak? Qaysi papka nima uchun?"

Yaxshi xabar: Laravel'ni o'rnatish bitta buyruq. Yomon "xabar" yo'q β€” sizga faqat uchta narsa kerak: PHP, Composer (PHP paketlar menejeri β€” npmning PHP'dagi ukasi) va baza (MySQL yoki hatto fayl ko'rinishidagi SQLite). Shu uchtasi tayyor bo'lsa, bitta buyruq yozasiz va ishlaydigan loyiha qo'lingizda paydo bo'ladi.

Bu bobda muhitni nol'dan tayyorlaymiz, loyihani yaratamiz va uning ichini ochib, "qaysi papka nima qiladi"ni tinch ko'ngil bilan o'rganamiz. Bob oxirida sizda ishlaydigan Laravel sayti va uni o'zgartirishga ishonchli qo'l bo'ladi.

Kerakli vositalar

Laravel 13 (2026) zamonaviy PHP'ga tayanadi. Loyiha boshlashdan oldin uchta narsa kerak:

Vosita Nima uchun Versiya
PHP Laravel'ning o'zi PHP'da yozilgan 8.2+ (tavsiya: 8.4)
Composer Laravel va paketlarni yuklab beradi 2.x
Baza Ma'lumot saqlash uchun MySQL / MariaDB / SQLite / PostgreSQL

Avval ular o'rnatilganini tekshiramiz. Terminal (Windows'da PowerShell yoki Terminal) oching va yozing:

php --version
composer --version

Natija taxminan shunday bo'lishi kerak:

PHP 8.4.0 (cli) (built: ...)
Composer version 2.9.3 ...

πŸ“Œ Agar php yoki composer "topilmadi" (command not found) desa β€” ular o'rnatilmagan yoki PATHga qo'shilmagan. Eng oson yechim β€” pastdagi Laravel Herd (u PHP'ni ham, Composer'ni ham o'zi bilan olib keladi). PHP'ning o'zini alohida o'rnatish kerak bo'lsa, PHP kitobidagi o'rnatish bobiga qarang β€” bu yerda PHP asoslarini takrorlamaymiz.

πŸ’‘ Versiya raqamlari aniq bir xil bo'lishi shart emas. Muhimi: PHP 8.2 dan yuqori, Composer 2.x bo'lsin. Laravel 13 PHP 8.2 ni minimum talab qiladi, lekin 8.4 da eng yangi imkoniyatlardan foydalanasiz.

Baza haqida: SQLite β€” eng oson boshlanish

Boshlovchilar ko'pincha "MySQL o'rnatish"da qoqiladi. Yaxshi xabar: Laravel 11+ da yangi loyiha default'da SQLite ishlatadi. SQLite β€” bu alohida server emas, oddiy bitta fayl (database/database.sqlite). Hech narsa o'rnatmasangiz ham loyiha ishlayveradi. MySQL'ni keyinroq, 7-bobda baza bilan jiddiy ishlay boshlaganda ulaymiz.

Lokal muhit variantlari

PHP'ni "qo'lda" o'rnatish o'rniga, hammasini bitta paketda beradigan tayyor vositalar bor. Tanlovni soddalashtiramiz:

Variant Kim uchun Platforma Izoh
Laravel Herd Boshlovchilar (tavsiya) Windows, macOS PHP + Composer + serverni bir bosishda beradi, bepul
Laravel Sail Docker yoqtirganlar Hamma (Docker kerak) Konteynerlarda izolyatsiya, jamoa uchun bir xil muhit
Laravel Valet macOS dasturchilari faqat macOS Yengil, tezkor, lekin Mac'ga bog'liq

πŸ’‘ Tavsiya: Windows yoki Mac'da yangi boshlayotgan bo'lsangiz β€” Herd'ni oling. herd.laravel.com dan yuklab, o'rnatasiz: u PHP, Composer va laravel buyrug'ini avtomatik sozlaydi. Keyin pastdagi buyruqlar darrov ishlaydi.

πŸ“Œ Sail β€” Docker konteynerida ishlaydi. Uning afzalligi: jamoadagi har bir dasturchida bir xil PHP/MySQL versiyasi bo'ladi ("mening kompyuterimda ishlaydi" muammosi yo'qoladi). Lekin Docker'ni bilish kerak β€” boshlovchi uchun biroz ortiqcha. laravel new myapp paytida Sail'ni tanlash mumkin, yoki mavjud loyihaga php artisan sail:install bilan qo'shasiz.

πŸ“Œ Valet faqat macOS'da ishlaydi. Engil va tez, lekin Windows foydalanuvchilari uchun emas.

Laravel 11+ slim loyiha papka strukturasi va har papkaning vazifasi

Loyihani yaratish

Muhit tayyor. Endi ikkita yo'l bor β€” ikkalasi ham bir xil natija beradi.

1-yo'l: laravel new (eng qulay)

Herd o'rnatsangiz yoki global Laravel installer'ingiz bo'lsa:

laravel new blog

Bu interaktiv: starter kit kerakmi (auth bilan), qaysi test framework (Pest/PHPUnit), qaysi baza β€” so'raydi. Boshlash uchun hammasi default ("none" / "SQLite" / "Pest") bo'laversin β€” keyin istalganini qo'shamiz.

Agar installer bo'lmasa, uni bir marta o'rnatib qo'yasiz:

composer global require laravel/installer

2-yo'l: composer create-project (har doim ishlaydi)

Faqat Composer bo'lsa kifoya β€” qo'shimcha hech narsa kerak emas:

composer create-project laravel/laravel blog

Bu buyruq blog nomli papka yaratadi, Laravel'ning eng so'nggi barqaror versiyasini yuklaydi, kerakli paketlarni o'rnatadi va APP_KEYni ham avtomatik generatsiya qiladi.

πŸ“Œ blog β€” bu siz tanlagan papka nomi. Xohlagan nomni qo'ying: dukon, maktab, mening-saytim. Papka bo'sh joysiz, kichik harflarda bo'lgani ma'qul.

πŸ’‘ Ikkala yo'l ham ortda bir xil ishni qiladi: Composer Laravel'ning "skeletini" (laravel/laravel) yuklaydi va composer install bilan barcha bog'liqliklarni vendor/ papkasiga tushiradi. laravel new shunchaki ustiga qulayroq interfeys qo'yadi.

O'rnatish tugagach, loyiha papkasiga kiramiz:

cd blog

Serverni ishga tushirish

Loyiha tayyor. Endi uni brauzerda ko'ramiz. Laravel ishlab chiqish (development) uchun ichki serverni o'zi bilan olib keladi:

php artisan serve

Natija:

   INFO  Server running on [http://127.0.0.1:8000].

  Press Ctrl+C to stop the server

Endi brauzerda http://127.0.0.1:8000 ni oching β€” Laravel'ning chiroyli "xush kelibsiz" sahifasini ko'rasiz. Tabriklayman, sizning birinchi Laravel saytingiz ishlamoqda!

php artisan serve mahalliy server ishga tushiradi va brauzer so'rovi public/index.php orqali javob oladi

πŸ“Œ Bu nima bo'ldi? serve mahalliy (faqat sizning kompyuteringizda ko'rinadigan) kichik server ishga tushiradi. Brauzer 127.0.0.1:8000 ga so'rov yuboradi, so'rov public/index.php ga tushadi β€” bu Laravel'ning yagona kirish nuqtasi. Index.php Laravel'ni "uyg'otadi", so'rovni routes/web.php ga uzatadi va javobni qaytaradi.

πŸ“Œ Terminalni yopsangiz yoki Ctrl + C bossangiz β€” server to'xtaydi va sayt ochilmay qoladi. Ishlash davomida serverni ishlab turishi kerak. Yangi buyruq yozish uchun ikkinchi terminal oynasini oching.

πŸ’‘ Herd ishlatsangiz, serve ham shart emas: Herd loyihangizni avtomatik https://blog.test kabi manzilda ko'rsatadi. Lekin php artisan serve hamma joyda, har qanday sozlamada ishlaydi β€” shuning uchun kitobda asosan shuni ishlatamiz.

❌ "127.0.0.1:8000 javob bermayapti" β€” ehtimol server ishga tushmagan (terminalga qarang) yoki 8000-port band. Boshqa portda ishga tushiring:

php artisan serve --port=8080

Loyiha strukturasi (slim 11+)

Endi loyihaning ichini ochamiz. Laravel 11+ da struktura ataylab soddalashtirilgan (slim): eski versiyalardagi ko'plab "qoziq" fayllar (mas. app/Http/Kernel.php, app/Console/Kernel.php) olib tashlangan. Bu boshlovchi uchun ayni muddao β€” chalg'ituvchi fayllar kamaygan.

Asosiy papka va fayllar, vazifasi bilan:

Joy Nima uchun
app/ Ilovangiz mantig'i: app/Models/ (Eloquent modellar), app/Http/Controllers/ (kontrollerlar)
routes/ Manzil-marshrutlar: web.php (sahifalar), console.php (artisan buyruqlar, scheduling)
resources/ Foydalanuvchi ko'radigan qism: views/ (Blade shablonlar), css/, js/
database/ migrations/ (jadval tuzilmalari), seeders/, factories/
config/ Sozlama fayllar: app.php, database.php, mail.php va h.k.
public/ Brauzer ko'radigan yagona papka. index.php β€” kirish nuqtasi
bootstrap/ app.php β€” ilova sozlanadigan markaz (routing, middleware, exceptions)
storage/ Yuklangan fayllar, log'lar, kesh, kompilyatsiya qilingan Blade
tests/ Avtomatik testlar (Pest/PHPUnit)
vendor/ Composer yuklab beradigan paketlar (Laravel'ning o'zi shu yerda). Git'ga tushmaydi
.env Maxfiy sozlamalar (parol, kalit). Git'ga tushmaydi
artisan Buyruqlar vositasi: php artisan ...
composer.json Loyiha bog'liqliklari ro'yxati

πŸ“Œ Eng muhim qoida β€” public/: brauzer faqat shu papkaga kira oladi. Qolgan hamma narsa (.env, config/, app/) tashqaridan ko'rinmaydi. Shuning uchun parollaringiz .envda xavfsiz turadi. Sof PHP'da hamma fayl ochiq turardi β€” bu yerda xavfsizlik tuzilmaga "tikilgan".

πŸ“Œ Slim struktura izohi: Laravel 8 va eski qo'llanmalarda app/Http/Kernel.php da middleware ro'yxatga olinardi. Laravel 11+ da bu fayl yo'q β€” uning o'rniga hammasi bootstrap/app.php da. Agar internetda Kernel.php haqida o'qisangiz β€” bu eskirgan ma'lumot, bizning versiyada boshqacha. Middleware'ni 15-bobda shu yerda sozlaymiz.

bootstrap/app.php ana shunday ko'rinadi β€” ilovaning "boshqaruv markazi":

<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        // Bu yerda middleware sozlanadi (15-bob)
    })
    ->withExceptions(function (Exceptions $exceptions) {
        // Bu yerda xatolarni qayta ishlash sozlanadi
    })->create();

Hozircha bu kodni o'zgartirmaymiz β€” faqat "marshrutlar shu yerda ro'yxatga olinadi, middleware shu yerda qo'shiladi" deb eslab qo'ying.

.env fayli va sozlamalar oqimi

Endi loyihaning eng muhim faylidan biri β€” .env ("environment", muhit) bilan tanishamiz. Bu fayl loyiha ildizida turadi va unda maxfiy, kompyuterga bog'liq sozlamalar saqlanadi:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=sqlite

MAIL_MAILER=log

Har bir qator β€” KALIT=qiymat. Keling, muhimlarini ko'rib chiqamiz:

  • APP_NAME β€” ilovangiz nomi (sayt sarlavhasi, email'larda ishlatiladi).
  • APP_ENV β€” muhit: local (kompyuteringizda), production (haqiqiy serverda).
  • APP_KEY β€” shifrlash kaliti (pastda batafsil).
  • APP_DEBUG β€” true bo'lsa, xatolar to'liq ko'rsatiladi (ishlab chiqishda qulay). Haqiqiy saytda doim false β€” aks holda xato sahifalarida maxfiy ma'lumot ko'rinib qoladi.
  • DB_CONNECTION β€” qaysi baza (sqlite, mysql, ...).

πŸ“Œ Nega .env alohida fayl? Chunki bu sozlamalar har kompyuterda boshqacha: sizning MySQL parolingiz boshqa, serverniki boshqa. Kodni o'zgartirmasdan sozlamalarni almashtirish uchun ular .envga ajratilgan. Shuning uchun .env git'ga yuklanmaydi (.gitignoreda). Buning o'rniga .env.example β€” parolsiz namuna fayl β€” git'da turadi, jamoadagilar undan nusxa olib o'z .envlarini to'ldiradi.

❌ Parolingizni to'g'ridan-to'g'ri kodga yozmang: $parol = "secret123"; β€” bu git'ga tushib, hammaga ochiq bo'lib qoladi. βœ… .envga yozing: DB_PASSWORD=secret123 β€” bu fayl maxfiy qoladi.

.env -> config -> ilova oqimi

Endi muhim tushuncha: kodingizda .envni to'g'ridan-to'g'ri o'qimaysiz. O'rtada config/ papkasi turadi. Oqim shunday:

  1. .env da xom qiymat turadi: APP_NAME=Blog.
  2. config/app.php uni env() orqali o'qiydi: 'name' => env('APP_NAME', 'Laravel').
  3. Ilova kodida esa siz config() ni o'qiysiz: config('app.name').

.env qiymatlari config fayllar orqali ilovaga uzatilishi va env() emas config() ni o'qish qoidasi

config/app.php taxminan shunday ko'rinadi (qisqartirilgan):

<?php

return [
    'name' => env('APP_NAME', 'Laravel'),
    'env' => env('APP_ENV', 'production'),
    'debug' => (bool) env('APP_DEBUG', false),
    'url' => env('APP_URL', 'http://localhost'),
    'timezone' => 'UTC',
    'locale' => env('APP_LOCALE', 'en'),
];

env('APP_NAME', 'Laravel') ni shunday o'qing: ".envdan APP_NAMEni ol; agar yo'q bo'lsa, Laravelni ishlat" β€” ikkinchi argument standart qiymat (PHP'dagi $massiv[$kalit] ?? $default qolipi bilan bir xil mantiq).

πŸ“Œ Oltin qoida: ilova kodingizda (controller, model, Blade) doim config() ni chaqiring, env() ni emas. Sababi: php artisan config:cache ishlatilganda Laravel barcha config fayllarni bitta keshga "muzlatib" qo'yadi β€” shundan keyin kod ichidagi env() chaqiruvlari null qaytaradi. config() esa har doim ishlaydi. env() faqat config/ fayllari ichida o'rinli.

πŸ’‘ Sozlamani test qilish uchun php artisan tinker (interaktiv konsol) ochib ko'rishingiz mumkin:

php artisan tinker

So'ng:

config('app.name');   // "Blog" qaytaradi
config('app.timezone'); // "UTC"

Tinker β€” Laravel ichida jonli PHP yozish imkonini beradi. Uni 11-bobda batafsil ishlatamiz.

APP_KEY β€” shifrlash kaliti

.envdagi APP_KEY β€” Laravel sessiyalar, cookie'lar va shifrlangan ma'lumotni himoyalash uchun ishlatadigan maxfiy kalit. composer create-project va laravel new uni avtomatik yaratib beradi. Agar bo'sh bo'lsa (mas. git'dan klonlangan loyihada), o'zingiz generatsiya qilasiz:

php artisan key:generate

Bu .envdagi APP_KEY qatorini to'ldiradi: APP_KEY=base64:....

❌ APP_KEY bo'sh bo'lsa, ishga tushganda shunday xato chiqadi:

Illuminate\Encryption\MissingAppKeyException
No application encryption key has been specified.

βœ… Yechim: php artisan key:generate ishlating β€” xato yo'qoladi.

πŸ“Œ Har loyihada APP_KEY noyob bo'lishi kerak va uni hech kimga bermang. Bu xuddi uyingiz kaliti: ochiq qoldirsangiz, kimdir sessiyalaringizni "ochib" qo'yishi mumkin.

artisan bilan tanishuv

artisan β€” Laravel'ning buyruq qatori yordamchisi (CLI). U routing'dan tortib jadval yaratishgacha hamma ishni terminaldan bajarib beradi. php artisan serve va php artisan key:generateni allaqachon ishlatdik. Endi to'liq ro'yxatni ko'ramiz:

php artisan list

Bu mavjud barcha buyruqlarni guruhlab ko'rsatadi. Eng ko'p ishlatadiganlaringiz:

php artisan serve              # mahalliy serverni ishga tushirish
php artisan key:generate       # APP_KEY yaratish
php artisan make:controller    # yangi controller fayli yaratish
php artisan make:model         # yangi model yaratish
php artisan migrate            # baza jadvallarini yaratish
php artisan route:list         # barcha marshrutlarni ko'rish
php artisan tinker             # interaktiv PHP konsoli

Biror buyruq nima qilishini bilmasangiz, --help qo'shing:

php artisan make:controller --help

πŸ“Œ Diqqat: make: bilan boshlanadigan buyruqlar fayl yaratib beradi ("scaffolding"). Masalan, php artisan make:controller SalomController β€” app/Http/Controllers/SalomController.php faylini tayyor shablon bilan yaratadi. Bularni 4-bobdan boshlab faol ishlatamiz.

πŸ’‘ API loyihalar uchun: Laravel 11+ da yangi loyihada routes/api.php default'da yo'q. API kerak bo'lsa, bitta buyruq bilan qo'shasiz (u Sanctum'ni ham olib keladi):

php artisan install:api

Buni 17-bobda RESTful API yozganda ishlatamiz β€” hozircha shunday buyruq borligini bilib qo'ying.

Composer bilan paket o'rnatish

Laravel'ning kuchi β€” uning paketlar ekotizimida. Yangi imkoniyat kerakmi? Ko'pincha kimdir uni paket qilib yozib qo'ygan. Paketni o'rnatish β€” bitta buyruq:

composer require nom/paket

Bu paketni vendor/ papkasiga yuklaydi va composer.jsonga qo'shadi. Masalan, kodingizni avtomatik tartiblaydigan Laravel Pint allaqachon yangi loyiha bilan keladi, lekin qo'lda o'rnatish ham shunday:

composer require laravel/pint --dev

πŸ“Œ --dev β€” "faqat ishlab chiqishda kerak, haqiqiy saytda emas" degani. Test va kod sifati vositalari odatda --dev bilan o'rnatiladi. Ular composer.jsonning require-dev bo'limiga tushadi.

πŸ“Œ composer.json β€” bu loyihaning "ingredientlar ro'yxati". Loyihani boshqa kompyuterga ko'chirganingizda vendor/ni nusxalamaysiz β€” shunchaki composer install yozasiz, Composer composer.jsonga qarab hamma paketni qaytadan yuklab beradi. Shuning uchun vendor/ git'ga tushmaydi.

πŸ’‘ Paketlarni packagist.org dan qidirasiz β€” bu Composer paketlarining markaziy ombori (npmdagi npmjs.com kabi).

Birinchi o'zgartirish

Nazariya yetarli β€” endi loyihani o'zgartiramiz. Maqsad: bosh sahifani o'zgartirib, Laravel'ning ishlashini "his qilish".

routes/web.php faylini oching. Hozir u shunday ko'rinadi:

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});

Bu shunday o'qiladi: "kimdir bosh sahifaga (/) GET so'rov yuborsa, welcome Blade shablonini qaytar". Keling, birinchi o'zgartirishni qilamiz β€” bosh sahifa shunchaki matn qaytarsin. welcomeni o'chirib, oddiy satr qaytaramiz:

Route::get('/', function () {
    return 'Salom, dunyo! Bu mening birinchi Laravel saytim.';
});

Faylni saqlang va brauzerni yangilang (server ishlab turgan bo'lsa, qo'shimcha hech narsa qilish shart emas β€” Laravel o'zgarishni darrov ko'radi). Sahifada matningiz chiqadi!

Endi ikkinchi marshrut qo'shamiz β€” manzilning bir qismini o'zgaruvchi qilib:

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return 'Salom, dunyo! Bu mening birinchi Laravel saytim.';
});

Route::get('/salom/{ism}', function (string $ism) {
    return "Assalomu alaykum, {$ism}!";
});

Endi brauzerda http://127.0.0.1:8000/salom/Oqil ni oching β€” "Assalomu alaykum, Oqil!" chiqadi. Manzildagi {ism} qismini funksiya argumenti sifatida oldik. Bu marshrutlashning kuchi β€” keyingi 3-bobda buni chuqur o'rganamiz.

πŸ“Œ view('welcome') β€” resources/views/welcome.blade.php faylini ko'rsatadi. O'sha faylni ochib, ichidagi HTML'ni ham bemalol o'zgartirib ko'ring (mas. <title>ni o'zgartiring). Blade shablonlarini 5-bobda batafsil o'rganamiz.

πŸ’‘ Tabriklayman! Siz endi: muhitni tayyorladingiz, loyiha yaratdingiz, serverni ishga tushirdingiz, strukturani o'rgandingiz, .envni tushundingiz va birinchi marshrutni o'z qo'lingiz bilan yozdingiz. Keyingi bobda marshrutlash (routing) β€” Laravel'ning yuragi β€” bilan jiddiy tanishamiz.

2-bob mashqlari

Quyidagi mashqlarni o'zingiz bajaring β€” yechim berilmagan. Har birini kompyuteringizda sinab ko'ring.

  1. Terminalda php --version va composer --version ni ishga tushiring. Versiyalaringizni daftaringizga yozib qo'ying.
  2. composer create-project laravel/laravel mashq-app buyrug'i bilan mashq-app nomli yangi loyiha yarating.
  3. Loyiha papkasiga kiring (cd mashq-app) va php artisan serve bilan ishga tushiring. Brauzerda xush kelibsiz sahifasini oching.
  4. Serverni --port=9000 bilan boshqa portda ishga tushiring va brauzerda 127.0.0.1:9000 ni oching.
  5. Serverni Ctrl + C bilan to'xtating va brauzerda yangilab, sahifa endi ochilmasligini kuzating. So'ng qayta ishga tushiring.
  6. Loyiha ildizidagi .env faylini oching. APP_NAME qiymatini o'z ismingizga o'zgartiring va saqlang.
  7. .envdagi APP_KEY qatoriga qarang. So'ng php artisan key:generate ishlating va kalit o'zgarganini tekshiring.
  8. .envda APP_DEBUG=true ni false ga o'zgartiring. routes/web.php ichida ataylab xato yozib (mas. return $yoqfunksiya();) brauzerda xato sahifasi qanday ko'rinishini taqqoslang (keyin truega qaytaring).
  9. php artisan list ishlating va chiqqan buyruqlardan kamida 5 tasini daftaringizga ko'chiring.
  10. php artisan route:list ishlating va loyihada qanday marshrutlar borligini ko'ring.
  11. php artisan serve --help ishlating va serve qanday qo'shimcha sozlamalarni qabul qilishini o'qing.
  12. Loyihadagi quyidagi papkalarni oching va ichidagini ko'ring: app/, routes/, resources/views/, config/, database/. Har biri nima saqlashini bir jumla bilan yozing.
  13. config/app.php faylini oching. 'timezone' qatorini toping va uni 'Asia/Tashkent' ga o'zgartiring.
  14. php artisan tinker oching va config('app.name') hamda config('app.timezone') ni chaqiring. .envda o'zgartirgan qiymatlaringiz aks etganini tekshiring.
  15. routes/web.php da bosh sahifani (/) o'z ismingizni qaytaradigan oddiy matnga o'zgartiring.
  16. routes/web.php ga /bugun nomli yangi marshrut qo'shing β€” u joriy sanani qaytarsin (PHP'ning date() funksiyasidan foydalaning).
  17. routes/web.php ga /qosh/{a}/{b} marshrutini qo'shing β€” u ikki sonni qo'shib natijani qaytarsin (http://127.0.0.1:8000/qosh/3/5 β†’ 8).
  18. resources/views/welcome.blade.php faylini oching, <title> tegini o'z saytingiz nomiga o'zgartiring va brauzer yorlig'ida (tab) o'zgarishni ko'ring.
  19. composer.json faylini oching va require bo'limida qanday paketlar borligini ko'ring. laravel/framework versiyasini toping.
  20. Laravel Herd va Laravel Sail haqida laravel.com hujjatlarini o'qing va o'zingizning ish muhitingiz uchun qaysi biri qulayroq ekanini, kamida 3 sabab bilan, daftaringizga yozing.