Kod yang boleh dipercayai dan boleh diselenggara adalah tulang belakang mana-mana projek PHP yang berjaya. Untuk mencapai matlamat ini, kita boleh menulis kod mengikut prinsip SOLID. Prinsip ini termasuk Prinsip Tanggungjawab Tunggal (SRP), Prinsip Tertutup Terbuka (OCP), Prinsip Penggantian Liskov (LSP), Prinsip Pengasingan Antara Muka (ISP) dan Prinsip Inversi Ketergantungan (DIP).
Prinsip Tanggungjawab Tunggal (SRP)
Prinsip Tanggungjawab Tunggal menyatakan bahawa kelas sepatutnya hanya mempunyai satu sebab untuk berubah. Dalam PHP, ini bermakna bahawa kelas harus mempunyai satu tanggungjawab. Reka bentuk sedemikian boleh meningkatkan kebolehselenggaraan dan kebolehbacaan kod.
Contoh Buruk - Tanggungjawab Bercampur
class User { public function verify ( $username , $password ) { /* ... */ } public function sendEmail ( $message ) { /* ... */ } }
Contoh Baik - Tanggungjawab Tunggal
class UserAuthenticator { public function verify ( $username , $password ) { /* ... */ } } class EmailSender { public function sendEmail ( $message ) { /* ... */ } }
Prinsip Terbuka-Tutup (OCP)
Ditutup tetapi perlu dilanjutkan ke kelas itu tidak terbuka kepada sambungan Pengubahsuaian ditutup. Dalam PHP, kita boleh melaksanakan prinsip ini menggunakan antara muka dan kelas abstrak. Dengan mentakrifkan antara muka dan kelas abstrak, kami boleh melanjutkan fungsi tanpa mengubah suai kod sedia ada.Contoh yang tidak baik - pengubahsuaian langsung
class Square { public $side; public function __construct($side) { $this->side = $side; } } class AreaCalculator { public function calculate($shapes) { $area = 0; foreach ($shapes as $shape) { if ($shape instanceof Square) { $area += $shape->side * $shape->side; } elseif ($shape instanceof Circle) { $area += pi() * $shape->radius * $shape->radius; } } return $area; } }
interface Shape { public function area(); } class Square implements Shape { private $side; public function __construct($side) { $this->side = $side; } public function area() { return $this->side * $this->side; } } class Circle implements Shape { private $radius; public function __construct($radius) { $this->radius = $radius; } public function area() { return pi() * $this->radius * $this->radius; } }
Contoh yang tidak baik - Melanggar LSP
class Bird { public function fly() { /* ... */ } } class Ostrich extends Bird { public function fly() { throw new Exception("鸵鸟不能飞"); } }
interface Bird { public function fly(); } class Sparrow implements Bird { public function fly() { /* ... */ } } class Ostrich implements Bird { public function fly() { /* ... */ } }
Contoh Buruk - Abses Antara Muka
interface Worker { public function work(); public function eat(); public function sleep(); }
interface Workable { public function work(); } interface Eatable { public function eat(); } interface Sleepable { public function sleep(); }
Contoh buruk - modul peringkat tinggi bergantung pada modul peringkat rendah
class LightBulb { public function turnOn() { /* ... */ } public function turnOff() { /* ... */ } } class Switch { private $bulb; public function __construct() { $this->bulb = new LightBulb(); } public function operate() { // Operate the bulb } }
interface Switchable { public function turnOn(); public function turnOff(); } class LightBulb implements Switchable { public function turnOn() { /* ... */ } public function turnOff() { /* ... */ } } class Switch { private $device; public function __construct(Switchable $device) { $this->device = $device; } public function operate() { // Operate the device } }
Atas ialah kandungan terperinci Pendekatan yang betul untuk pengaturcaraan PHP: petua dan contoh praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!