Witam, mam pytanie odnośnie poprawnej struktury aplikacji.
Załóżmy, że łącze się aplikacją do rest-api, który zwraca mi dane takie jak:
- id użytkownika
- nazwa
- data rejestracji
No to idąc po kolei:
- tworze projekt: composer init, przechodzę pomyślnie przez przygotowanie pliku package.
- Otrzymuje folder src, vendor etc.
- Zaczynam programowanie i teraz tak:
Mogę zrobić to tak:
Tworzę plik: mkdir ./src/Users/Users.php
Plik ten mógłby wyglądać tak:
class Users {
private $users;
public function getAllUsers() {
// Polaczenie do rest api oraz zapisanie zwroconych danych do zmiennej
$response = $requestToApi;
// Zwrocone DANE to JSON zakladajac, ze mam juz tablice obiektow robie for po tablicy
for ($i = 0; $i < count($response); $i++) {
$this->users[$i] = $response[$i]["id"];
$this->users[$i] = $response[$i]["name"];
$this->users[$i] = $response[$i]["created_at"];
}
}
public function getUsers() {
return $this->users;
}
}
Ale również mogę zrobić to tak:
Tworzę plik: mkdir ./src/Users/Users.php
Tworzę plik: mkdir ./src/Users/User.php
Zawartość pliku Users.php:
class Users {
private $users;
public function getAllUsers() {
// Polaczenie do rest api oraz zapisanie zwroconych danych do zmiennej
$response = $requestToApi;
// Zwrocone DANE to JSON zakladajac, ze mam juz tablice obiektow robie for po tablicy
for ($i = 0; $i < count($response); $i++) {
$user = new User();
$user->setId($response[$i]["id"]);
// set name
// set created at
array_push($this->users, $user);
}
}
public function getUsers() {
return $this->users;
}
}
Zawartość pliku User.php:
class User {
private $id;
private $name;
private $created_at;
public function setId($id) {
$this->$id = $id;
}
public function getId() {
return $this->id;
}
// reszta setterow i getterow
}
Który z tych modeli jest ,,modelem rozsądnym" ?
A może żaden z tych modeli nie jest poprawny i powinno się to robić w inny sposób ?
Osobiście byłbym za modelem drugim.
Jednakże wtedy w folderze /src/Users/ będę posiadał pliki:
Users.php
User.php
Trochę mi się nie podoba takie rozwiązanie - kole w oczy.
Jeżeli sposób drugi jest ,,dosyć poprawnym" podejściem do OOP to jak ten plik nazwać lub do jakiego folderu go przenieść aby miało to ręce i nogi ?
Ogólnie jeżeli ktoś miałby jakieś ciekawe artykuły na temat ,,przygotowania poprawnej organizacji kodu" chętnie poczytam.