ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² Laravel ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ. ΠΡΠ°Π²ΠΈΠ»Π° Π½ΡΠΆΠ½Ρ Π²Π΅Π·Π΄Π΅, Π° Π΅ΡΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΡ Π½ΠΎ ΠΈ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ, ΡΠΎ ΡΡΠΎ Π΄Π°ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΡΠΎΡΡ Π² ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Laravel Π½Π°Ρ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ, Π½ΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π»ΠΈΡΡ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ ΠΏΠΎ Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ! ΠΡΠΈΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΡ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ Laravel ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ!
ΠΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΡ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ ΡΠ»ΠΎΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ Π² Laravel = ΠΏΡΠΎΡΡΠΎΠΉ, ΡΠΈΡΡΡΠΉ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
- ΠΠ±ΡΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°
- Π’Π°Π±Π»ΠΈΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
- Models
- ΠΠΈΠ³ΡΠ°ΡΠΈΠΈ
- Π€Π°Π±ΡΠΈΠΊΠΈ
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈ/Policy
- ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ
- Controllers
- Routes
- Blade
- Json response
- ΠΡΠ΅Π³Π΄Π° Π² Π½Π°Π·Π²Π°Π½ΠΈΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π° Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ. ΠΠ΅ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½ΡΠ»ΠΈΡ.
ΠΡΠ»ΠΈ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠ»ΠΎΠ²Π° ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΈΡΠ΅ΡΡΡ - ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄. ΠΠ°ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠ»ΠΎΠ²Π°ΡΠ½ΡΠΉ Π·Π°ΠΏΠ°Ρ ΡΠ°ΡΡΠΈΡΠΈΡΠ΅) - ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ.
- Π‘ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΏΠΎΠ΄Π±ΠΈΡΠ°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΡΠ°Π·Ρ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ.
- ΠΠ΅ ΡΠΎΠΊΡΠ°ΡΠ°ΠΉΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ Π±Π΅Π· ΠΎΡΡΡΠΎΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
// ΠΏΠ»ΠΎΡ ΠΎ $acc $conn $descr prepResp() regEvtHandler() updCom() // Ρ ΠΎΡΠΎΡΠΎ $account $connection $description prepareResponse() registerEventHandler() updateComment()
ΠΠ»Ρ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΡΠ°Π±Π»ΠΈΡ ΠΏΡΠΈΠ½ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅ Ρ Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ snake_case:
snake_case β ΡΡΠΈΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π½ΡΡ ΡΠ»ΠΎΠ², ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ² ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ. Π‘Π»ΠΎΠ²Π° ΠΊΠ°ΠΊ Π±Ρ ΠΏΠΎΠ»Π·ΡΡ ΠΏΠΎ ΡΡΡΠΎΠΊΠ΅, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π΄Π»ΠΈ_ΠΈ_ΠΈΠ½Π½ΠΎΠ΅, ΠΊΠ°ΠΊ Π·ΠΌΠ΅Ρ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅. Π Π΄Π°Π½Π½ΠΎΠΌ Π³Π°ΠΉΠ΄Π΅ snake_case Π²ΡΠ΅Π³Π΄Π° Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅
ΠΡΠΈΠΌΠ΅ΡΡ:
users
products
order_products
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘Π²ΡΠ·ΡΡΡΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ BelongsToMany
.
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ snake_case + ΠΈΠΌΠ΅Π½Π° Π΄Π²ΡΡ
ΡΠ°Π±Π»ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄Π΅ΠΌ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ, Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΡΠ°Π±Π»ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ» Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π½ΠΈΡ _
.
Π‘ΠΎΡΡΠΈΡΡΡΡΡΡ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΌ Π² Π°Π»ΡΠ°Π²ΠΈΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
Π Π°Π·Π±Π΅ΡΡΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅: Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ users
ΠΈ tasks
, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±Π΅ ΡΠ°Π±Π»ΠΈΡΡ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅. ΠΡΠΊΠ²Π° t
Π² Π°Π»ΡΠ°Π²ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π½ΡΡΠ΅ u
, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ²ΡΠ·ΠΈ Π΄Π²ΡΡ
ΡΠ°Π±Π»ΠΈΡ Π±ΡΠ΄Π΅Ρ - task_user
.
ΠΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΡΠ»ΠΎΠΆΠ½Π΅Π΅: order_products
ΠΈ properties
! Π Π΅Π·ΡΠ»ΡΡΠ°Ρ - order_product_property
.
ΠΡΠΈΠΌΠ΅ΡΡ:
task_user
event_place
order_product_property
ΠΡΠ΅ ΠΏΡΠΎΡΡΠΎ - snake_case. Π Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠΈΡΠ°Π»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅
ΠΡΠΈΠΌΠ΅ΡΡ:
created_at
seo_title
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Laravel ΠΎΠΆΠΈΠ΄Π°Π΅Ρ id
.
snake_case Π² ΡΠΎΡΠΌΠ°ΡΠ΅ - ΠΈΠΌΡ ΡΠ°Π±Π»ΠΈΡΠ° Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅, Π΄Π°Π»Π΅Π΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ _
ΠΈ Π΄Π°Π»Π΅Π΅ Primary key ('id').
ΠΡΠΈΠΌΠ΅Ρ - ΡΡΡΠ°Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π³Π΄Π΅ Π²ΡΠ΅ ΡΡΡΠ°Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ countries
, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ users
ΠΈΠΌΠ΅Π΅Ρ foreign key Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΡΠΎ ΡΡΡΠ°Π½ΠΎΠΉ - country_id
, ΡΠΎΡΠΌΠ°Ρ {ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ_ΡΠ°Π±Π»ΠΈΡΠ°_Π²_Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ_ΡΠΈΡΠ»Π΅}_{primary_key_ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ_ΡΠ°Π±Π»ΠΈΡΡ}
ΠΡΠΈΠΌΠ΅ΡΡ:
country_id
order_product_id
PascalCase Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅
PascalCase β ΡΡΠΎ ΡΡΠΈΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠΌΠ΅Π½, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΡΡΠ°Π²Π½ΡΠ΅ ΡΠ»ΠΎΠ²Π° Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ) ΠΏΠΈΡΡΡΡΡ ΡΠ»ΠΈΡΠ½ΠΎ, ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΡΠΈΠΌΠ΅Ρ: MyVar, MyBestProgramm, WorkArray. ΠΠ°ΡΠΊΠ°Π»Ρ Π½ΠΎΡΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ Π΄Π°Π½Π½ΡΡ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΡΠ»ΠΈ ΠΌΡ ΡΠΎΠ±Π»ΡΠ΄Π°Π»ΠΈ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΡ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡ, ΡΠΎ Laravel Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΠ°ΠΊ? ΠΡΠΈΠ²Π΅Π΄Π΅Ρ Π²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π² snake_case Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ '_' ΠΈ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄ΡΡ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. ΠΠΎΠ»ΡΡΠΈΡΡΡ ΠΈΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ.
Π ΠΈΡΠΎΠ³Π΅ User
Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»Π°ΡΡΡΡ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ΅ users
, OrderProduct
ΠΊ order_products
ΠΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ:
- ΠΡΠ»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΊΠ°Π·Π°Π½ΠΎ Π½Π΅ Π² snake_case (ΠΈΠ»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ) ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΏΠΎΠΌΠΎΠ³Π°ΡΡΠ΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°Π±Π»ΠΈΡΡ:
protected $table = 'tableName';
- ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ Ρ primary key -
protected $primaryKey = 'primaryKey';
- ΠΈ Π΅ΡΠ΅ ΠΌΠ°ΡΡΠ° ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ Π΄Π»Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ)
ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
app/Models
ΠΡΠΈΠΌΠ΅ΡΡ:
User
Product
OrderProduct
ΠΡΠΈ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ UPPER_CASE Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΌ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅ΡΡ:
class Document
{
const STATUS_ACTIVE = 1;
const STATUS_DELETE = 2;
const STATUS_ARCHIVE = 9;
}
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΏΠΎΠ»Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ Π² snake_case.
Π‘ΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π·Π° ΡΡΠ΅Ρ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΡ php ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠ±ΡΠ°ΡΠ°ΡΡΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Laravel Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠΎΡΠ½Π΅ΡΠ΅Ρ ΠΈΡ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ (Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ).
ΠΡΠΈΠΌΠ΅ΡΡ:
$model->created_at
$model->seo_title
ΠΡΠΈ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ camelCase:
camelCase - ΡΡΠΈΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π½ΡΡ ΡΠ»ΠΎΠ², ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ² ΠΏΠΈΡΡΡΡΡ ΡΠ»ΠΈΡΠ½ΠΎ Π±Π΅Π· ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ², ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π²Π½ΡΡΡΠΈ ΡΡΠ°Π·Ρ ΠΏΠΈΡΠ΅ΡΡΡ Ρ ΠΏΡΠΎΠΏΠΈΡΠ½ΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠ°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠΉ Π±ΡΠΊΠ²Ρ. Π ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π²Π΅ΡΠ±Π»ΡΠ΄ (camel) Ρ Π΅Π³ΠΎ Π³ΠΎΡΠ±Π°ΠΌΠΈ.
ΠΡΠΈΠΌΠ΅ΡΡ:
getSomething()
ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ camelCase ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
camelCase Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ scope ΠΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
ΠΡΠ΅ ΠΏΡΠΎΡΡΠΎ - camelCase Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΡΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΎΡΠΌΠ»ΡΠ΅ΠΌ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅, Π° Π΅ΡΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ - ΡΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅!
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ User
c ΡΠ°Π·Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ Country
.
ΠΡΠΈΠΌΠ΅ΡΡ:
belongsTo, hasOne, hasOneThrough, morphOne
=country()
belongsToMany, hasMany, hasManyThrough, morphMany, morphToMany
=countries()
ΠΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ:
- ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ
foreign_key
return $this->hasOne(Phone::class, 'foreign_key');
- ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ
foreign_key
ΠΈlocal_key
return $this->hasOne(Phone::class, 'foreign_key', 'local_key');
- ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΠΈ ΡΠ²ΡΠ·ΡΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΊΠ»ΡΡΠΈ
return $this->belongsToMany(Role::class, 'role_user', 'user_id', 'role_id');
php artisan make:migration migration_name
ΠΠΎΠΌΠ°Π½Π΄Π° Π²ΡΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΡΡΠΎΠΉ ΡΠ°ΠΉΠ» ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, Π³Π΄Π΅ ΠΌΠ΅ΡΠΎΠ΄Ρ up ΠΈ down Π±ΡΠ΄ΡΡ ΠΏΡΡΡΡΠΌΠΈ.
public function up()
{
//
}
public function down()
{
//
}
ΠΠΎ ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ» Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΏΡΠΎΡΠ°Ρ Π½Π°ΠΌ ΠΆΠΈΠ·Π½Ρ.
php artisan make:migration create_users_table
ΠΡ Π΄Π°Π»ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ Ρ
ΠΎΡΠΈΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ users - create_{ΠΠΌΡ_ΡΠ°Π±Π»ΠΈΡΡ}_table
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ Π·Π΄Π΅ΡΡ create_{ΠΠΌΡ_ΡΠ°Π±Π»ΠΈΡΡ}
, Π° Π²ΠΎΡ table Π² ΠΊΠΎΠ½ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ
Π ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users');
}
php artisan make:migration add_column_to_users_table
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠΎΠ±ΡΠ°Π΅ΠΌ Laravel ΠΎ Π½Π°ΡΠ΅ΠΌ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ Π·Π΄Π΅ΡΡ to_{ΠΠΌΡ_ΡΠ°Π±Π»ΠΈΡΡ}
, Π° Π²ΠΎΡ table Π² ΠΊΠΎΠ½ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ
public function up()
{
Schema::table('users', function (Blueprint $table) {
//
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
//
});
}
ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
database/factories
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π±ΡΠΈΠΊΠ°ΠΌΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° factory()
Π² ΠΌΠΎΠ΄Π΅Π»ΡΡ
. ΠΠΎΠ΄Π΅Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ ΡΠ°Π±ΡΠΈΠΊΠΈ Π΅ΠΉ ΡΡΡΠ»Π°ΡΡΡΡ Π΅ΡΠ»ΠΈ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΡ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ.
Π’Π΅ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΡΠΎ ΠΈ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΡΡΠΈΠΊΡ Factory
!
Π€ΠΎΡΠΌΠ°Ρ - {ΠΠΌΡΠΠΎΠ΄Π΅Π»ΠΈ}Factory
ΠΡΠΈΠΌΠ΅ΡΡ:
- ΠΠΎΠ΄Π΅Π»Ρ
User
, Π° ΡΠ°Π±ΡΠΈΠΊΠ°UserFactory
- ΠΠΎΠ΄Π΅Π»Ρ
OrderProduct
, ΡΠ°Π±ΡΠΈΠΊΠ°OrderProductFactory
ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
app/Policies
Laravel ΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΈ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΉ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ "Π²ΡΡΡΠ½ΡΡ".
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΡΠΎ ΠΈ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΡΡΠΈΠΊΡ Policy
!
Π€ΠΎΡΠΌΠ°Ρ - {ΠΠΌΡΠΠΎΠ΄Π΅Π»ΠΈ}Policy
ΠΡΠΈΠΌΠ΅ΡΡ:
- ΠΠΎΠ΄Π΅Π»Ρ
User
, Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°UserPolicy
- ΠΠΎΠ΄Π΅Π»Ρ
OrderProduct
, ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°OrderProductPolicy
ΠΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Laravel, Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΊΡΠΎ Π±ΡΠ΄Π΅Ρ Ρ Π½ΠΈΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ.
PascalCase Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅.
ΠΡΠΈΠΌΠ΅ΡΡ:
Models
QueryBuilders
Filters
Laravel Π΄Π°Π΅Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π² ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ.
ΠΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ DDD ΠΏΠΎΠ΄Ρ
ΠΎΠ΄
, ΡΠΎ Π½Π°Ρ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π²ΡΡ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ src
. Π’Π°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π² src
/app
ΠΈ Π½Π°Π·Π²Π°ΡΡ ΡΠΊΠ°ΠΆΠ΅ΠΌ App
ΠΠΎ ΡΠ°ΠΌΠΈ Π³ΡΡΠΏΠΏΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ Π² Ρ ΠΎΡΠΎΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°Ρ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊΠ°ΠΊ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅.
ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
app/Http/Controllers
PascalCase Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅ c ΡΡΡΡΠΈΠΊΡΠΎΠΌ Controller.
ΠΡΠΈΠΌΠ΅ΡΡ
CatalogController
ProductController
OrderController
BlogController
snake_case Π»ΠΈΠ±ΠΎ kebab-case, ΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ Π·Π΄ΡΠ°Π²ΡΠΌ ΡΠΌΡΡΠ»ΠΎΠΌ Π²ΡΠ±ΠΈΡΠ°Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π»ΠΈΠ±ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ.
apiResource
ΠΈ resource
ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΎΡΡΠ°Π΅ΡΡΡ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅.
kebab-case ΡΡΠΈΠ»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ»ΠΎΠ²Π° Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π΄Π΅ΡΠΈΡΠ°. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ, ΡΡΠΎ ΡΠ»ΠΎΠ²Π° ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΊΠ°ΠΊ Π±Ρ Π½Π°ΡΠ°ΠΆΠΈΠ²Π°ΡΡ Π½Π° ΡΠ°ΠΌΠΏΡΡ β Π²ΠΎΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΡΠ»ΡΠΊ (kebab).
ΠΡΠΈΠΌΠ΅ΡΡ
Route::get('catalog', CatalogController::class)
Route::get('categories', CategoryController::class)
Route::resource('users', UserController::class)
Route::apiResource('users', UserController::class)
snake_case Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΎΡΡΠ°Π΅ΡΡΡ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅.
snake_case
ΠΠ»ΡΡΠΈ Π² snake_case