Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%)
|
Nie czuję do końca stosowania interfejsów w mojej aplikacji... Poniżej podaję, jak to obecnie wygląda. Może tak zostać bądź coś poprawić?
Utworzyłem interfejs Mysqli dla klasy Database: Kod <?php declare(strict_types=1); namespace App\Core; interface Mysqli { public function dbConnect(): void; public function dbClose(): void; public function dbQuery(string $query): mixed; public function dbFetchArray(mixed $result): array|null|false; public function dbNumberRows(mixed $result): int; public function dbAffectedRows(): int; public function dbInsertId(): int; public function dbStartTransaction(): bool; public function dbCommit(): bool; public function dbRollback(): bool; } Interfejs Mail jest implementowany przez Email: Kod <?php declare(strict_types=1); namespace App\Core; interface Mail { public function sendEmail( string $serverName, string $emailFrom, string $emailTo, string $subject, string $message ): bool; } Oraz interfejs Validator jest implementowany przez abstrakcyjne klasy Code, Error i Message, które są potem rorszerzane przez podklasy odpowiedziane za validację (np. MainPageValidator) danych z formularzy czy api: Kod <?php declare(strict_types=1); namespace App\Core; interface Validator { public function isValid(): bool; } Wypadałoby dodać jeszcze inne interfejsy dla moich klas tutaj? Trochę nie czuję, gdzie powinienem stosować interfejsy... |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%)
|
Poprawiłem (szczegóły tutaj):
Kod <?php declare(strict_types=1); namespace App\Core; interface Database { public function connect(): void; public function close(): void; public function query(string $query): bool; public function result(): mixed; public function fetchArray(mixed $result): array|null|false; public function numberRows(mixed $result): int; public function affectedRows(): int; public function insertId(): int; public function startTransaction(): bool; public function commit(): bool; public function rollback(): bool; } Kod <?php declare(strict_types=1); namespace App\Core; class Mysqli implements Database { [...] public function query(string $query): bool { $this->mysqlResult = mysqli_query($this->mysqlLink, $query); return (bool) $this->mysqlResult; } public function result(): mixed { return $this->mysqlResult; } [...] } Kod abstract class Controller
{ [...] public function setManager(string $name = 'Mysqli'): void { if (!isset($this->manager[$name])) { $this->database[$name] = new $name($name); $this->manager[$name] = new Manager($this->database[$name]); $this->database[$name]->connect(); } } public function getManager(string $name = 'Mysqli'): Manager { $this->setManager($name); return $this->manager[$name]; } [...] Ten post edytował eerie 3.03.2025, 17:40:26 |
|
|
|
eerie [PHP] Jak stosować interfejsy? 3.03.2025, 10:37:49
nospor 1) Napisales ktore klasy implementuja ktore interf... 3.03.2025, 10:55:06
nospor Odnosnie tego co zwraca query() to nie poprawione ... 3.03.2025, 18:00:06 
Loguss Cytat(nospor @ 3.03.2025, 18:00:06 ) ... 3.03.2025, 21:51:02
eerie Poprawione: https://github.com/EEQSOFT/framework.e... 3.03.2025, 23:53:05
nospor Cytattrochę za bardzo kombinujesz, ale pomysł jest... 4.03.2025, 10:33:46
viking A nie lepiej po prostu przejść na pdo, albo chocia... 4.03.2025, 10:47:59
eerie CytatA nie lepiej po prostu przejść na pdo, albo c... 4.03.2025, 16:29:17
nospor CytatPo usunięciu małpy wywala ostrzeżenie, więc z... 4.03.2025, 17:01:21
eerie CytatJakie ostrzezenie? Ostrzezenia sie naprawia a... 4.03.2025, 18:49:06
nospor Odnosnie bledu i malpy. Nie uzywaj malp. Zamiast t... 6.03.2025, 07:44:13
eerie Dzięki za podpowiedź. Miałem dzisiaj trochę wolneg... 10.03.2025, 17:20:32
nospor Nie
print_r($logData, 1);
a
print_r(... 10.03.2025, 17:24:53
eerie Ok. Dzięki za uwagi. Poprawione. 10.03.2025, 20:21:55 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 23:04 |