Wpis z mikrobloga

#php #laravel
1)Robię teraz bootcamp laravela. Możecie wyjaśnić czy dobrze rozumiem ten kod? Jak coś moglibyście mnie poprawić?

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
// ...
}

namespace oznacza że klasa Flight będzie zapisana w pliku Models w folderze App. use oznacza że wykorzystamy rodzica klase która jest zapisana w pliku Model który znajduje się w Illuminate\Database\Eloquent. Reszta to definiowanie klasy poprzez class Flight i dziedziczenie metod i właściwości klasy Model poprzez słowo kluczowe extends.

2) Zastanawia mnie skoro powyższe zostanie zapisane w pliku Models to po co otwierać nowy plik i pisać namespace App\Models; skoro można otworzyć plik Models i tam zapisać. Chociaż myślę że czegoś nie rozumiem albo nie wiem. Czy moglibyście mi to wyjaśnić?

Z góry dziękuję za pomoc :)
  • 3
@massejferguson: namespace nie jest równoznaczne z miejscem zapisania pliku. Często przyjmuje się (jest to dobra praktyka), że jeżeli fizyczny plik w projekcie będzie w ścieżce \App\Controller\IndexController.php, to jego namespace będzie App\Controller, ale można się spotkać z sytuacjami, gdy tak nie będzie.

namespace w PHP jest mechanizmem pozwalającym na grupowanie klas, funkcji i innych elementów kodu w logiczne jednostki, które pomagają uniknąć konfliktów nazw i umożliwiają organizację kodu.

2)

Teoretycznie
Masz jeden folder o nazwie model w ktorym laduja twoje wszystkie modele


@szubke: nie ucz jego tak, bo rzeczywiście zrozumie, że w app/Models będą same modele, a jak model będzie gdzie indziej to się pogubi (np. model w package discovery, chociaż w teorii nawet nie ma to aż tak znaczenia),

lepiej napisać: obecnie masz jeden folder o nazwie Model (w katalogu app; nie jest on ani plikiem, ani klasą, jest po