Mi lehetett a baj a kodommal? Elutasitottak allasrol php gyakornoki
Feladat:
It's a really simple php application, based on an MVC pattern. I'd like to
have a system which is implemented in core PHP (no framework or CMS can be
used) and it is:
- URL mapped (.htaccess rewrite)
- Based on an MVC pattern
- Object oriented
- Uses database (MySQL)
Requirements:
The application should have 2 database tables: users (id, name) and
advertisements (id, userid, title).
* As a user I'd like a page that shows the list of the users existing in
the system.
* As a user I'd like a page that shows the list of the existing
advertisements in the system (and the related user's name of course)
* They should be different pages
* So the system should contain 3 pages:
-> index, with the links to the user list and the advertisement list
-> user list
-> advertisement list
-> The whole system should have a minimalist design (css)
In summary:
So it's a 3 paged application, with a minimal design, and database access,
which is URL mapped, and based on an MVC pattern. No framework or CMS
allowed to use.
I need the source of the application, which I expect to be about 6-8 files.
Here can be a difference of course.
Requirements regarding the implementation:
- Must be object oriented!
- Must have at least 1 layer under the Controller layer
- Model and service methods should be separated. Model here should be
clear, used only for representation.
- Must have a nice, and well documented code
- A very simple css, in minimal style
This is important for us, it helps with the decision. If you can solve
this, you definitely can fit to our project.
Let me know if you have any questions.
Megoldasom:
Abszolút nem vagyok PHP szakértő, de ez MVCS, nem MVC. És én totálisan indokolatlannak látom itt a service réteget, ezzel együtt azt érzem, hogy nem teljesen világos neked, hogy mi kerül a service-be és mi a modelbe. Mondjuk jelen esetben szerintem a service-be kell semminek se kéne lennie.
Ezen kívül, az én ízlésemnek kicsit túl sok a view-ba való kód az index.php-ben, ugyanúgy, túl sok a nem oda való logika a view-ban. Szerintem nincs ez rendesen elszaparálva, nagyon keveredik az egész.
A db.php is olyan fura kicsit. Eleve, ha az .env fájl nem létezik, felesleges vizsgálni bármi mást is, azonnal kell dobni egy exceptiont. De nálad se a file_exists, se a mysqli nem dob kivételt. Illetve a mysqli dob, ha a MYSQLI_REPORT_STRICT be van állítva, de nálad ezt nem látom.
Az exceptiont is letudtad annyi, hogy Exception aztán kész. Én ezt úgy szoktam megoldani, hogy minden kivételre külön hibaosztályom van, mondjuk van egy általános AccountRepositoryException, ami az Exception-ből származik, és van egy AccountNotActivatedException, ami az AccountRepositoryException-ből származik, és akkor dobja a rendszer, ha a felhasználó nem aktivált fiókkal próbál belépni. Lehet, hogy te is így szoktad csinálni, csak kevés volt rá az időd.
Illetve olyan apróságok, mint hogy használhattál volna PDO, a prepared statement-ek miatt.
Esetleg lehet, hogy érdemes lenne kicsit elmenned statikus típusosság felé, megadni a paraméterek típusát, a visszatérési értékek típusát.
Nálam pl. az account entity osztályban, ami egy accountot reprezentál, a propertyk inicializációja, így néz ki:
private ?int $id = null;
private ?string $username = null;
private ?string $email = null;
private ?string $newemail = null;
private ?int $regdate = null;
private ?int $lastlogin = null;
private ?string $password = null;
private ?int $status = null;
private ?string $activationcode = null;
private ?string $passwordrecoverycode = null;
private ?string $role = null;
Továbbá lehetne használni a PHP újabb szolgáltatásait, pl. a constructor property promotiont.
Amúgy mennyi időt adtak erre a feladatra?
Koszonom.
48orat
A JS, CSS és akár a View részt rakhatnád Assets, vagy Resources mappába.
Ajánlom figyelmedbe, hogy nézd meg pl a Laravel mappa szerkezetét.
Igen ami nekem is feltűnt, mint a fenti válaszolónak, hogy Service-be raktad amit, amúgy a modellbe kellett volna.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!