Corak Reka Bentuk Penyesuai ialah corak struktur yang membenarkan objek dengan antara muka yang tidak serasi berfungsi bersama. Ia bertindak sebagai perantara (atau penyesuai) antara dua objek, menukar antara muka satu objek kepada antara muka yang diharapkan oleh yang lain. Ini membenarkan kelas yang sebaliknya tidak serasi kerana mereka mempunyai antara muka yang berbeza untuk bekerjasama tanpa pengubahsuaian pada kod asalnya.
Struktur Penyesuai
Corak Penyesuai secara amnya terdiri daripada tiga elemen utama:
Jenis Penyesuai
Bila hendak menggunakan Penyesuai?
Corak ini berguna dalam sistem yang perlu berfungsi dengan perpustakaan luaran atau API, membolehkan anda menyesuaikan fungsinya tanpa mengubah kod perpustakaan ini.
Berikut ialah contoh cara menggunakan Corak Reka Bentuk Penyesuai untuk menyepadukan PHPMailer dengan antara muka tersuai.
Situasi:
Mari andaikan bahawa sistem anda menjangkakan mana-mana kelas penghantaran e-mel untuk melaksanakan antara muka yang dipanggil IMailer, tetapi PHPMailer tidak mengikuti antara muka ini secara langsung. Penyesuai akan digunakan untuk menyesuaikan PHPMailer kepada antara muka yang diharapkan oleh sistem.
Pasang PHPMailer melalui Komposer
composer require phpmailer/phpmailer
Sistem Direktori
?Adapter ┣ ?src ┃ ┣ ?Interfaces ┃ ┃ ┗ ?IMailer.php ┃ ┣ ?Adapters ┃ ┃ ┗ ?PHPMailerAdapter.php ┃ ┗ ?Services ┃ ┗ ?ServicoDeEmail.php ┣ ?vendor ┣ ?composer.json ┗ ?index.php
Automuat
Dalam fail composer.json (terletak di akar projek), tambahkan ruang nama Apl untuk memuatkan kelas secara automatik:
{ "autoload": { "psr-4": { "App\": "src/" } }, "require": { "phpmailer/phpmailer": "^6.5" } }
Imailer Antara Muka
namespace App\Interfaces; interface IMailer { public function send($to, $subject, $message); }
Kelas PHPMailerAdapter
namespace App\Adapters; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; use App\Interfaces\IMailer; class PHPMailerAdapter implements IMailer { private $phpMailer; public function __construct() { $this->phpMailer = new PHPMailer(true); // Basic PHPMailer configuration $this->phpMailer->isSMTP(); $this->phpMailer->Host = 'smtp.example.com'; $this->phpMailer->SMTPAuth = true; $this->phpMailer->Username = 'your-email@example.com'; $this->phpMailer->Password = 'password'; $this->phpMailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $this->phpMailer->Port = 587; $this->phpMailer->setFrom('your-email@example.com', 'Your Name'); } }
public function send($to, $subject, $message) { try { $this->phpMailer->addAddress($to); $this->phpMailer->Subject = $subject; $this->phpMailer->Body = $message; $this->phpMailer->send(); echo 'Email sent successfully!'; } catch (Exception $e) { echo "Failed to send email: {$this->phpMailer->ErrorInfo}"; } }
Perkhidmatan E-mel Kelas
namespace App\Services; use App\Interfaces\IMailer; class EmailService { private $mailer; public function __construct(IMailer $mailer) { $this->mailer = $mailer; } }
public function sendEmailToClient($to, $subject, $message) { $this->mailer->send($to, $subject, $message); }
Indeks fail.php
composer require phpmailer/phpmailer
Penjelasan Struktur
Atas ialah kandungan terperinci Corak Reka Bentuk PHP: Penyesuai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!