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;
}
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;
}
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;
}
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...