PHP面向对象SOLID原则
PHP面向对象SOLID原则SOLID是面向对象设计的五个基本原则。遵循这些原则可以让代码更容易维护和扩展。今天说说SOLID原则在PHP中的应用。单一职责原则。一个类应该只有一个职责。php// 违反SRPclass User{public function save(): void {}public function sendEmail(): void {}public function generateReport(): void {}}// 遵循SRPclass UserRepository{public function save(User $user): void {}}class EmailService{public function send(User $user, string $message): void {}}class ReportGenerator{public function generate(array $data): string {}}?开放封闭原则。对扩展开放对修改关闭。phpinterface PaymentMethod{public function pay(float $amount): array;}class Alipay implements PaymentMethod{public function pay(float $amount): array{return [channel alipay, status success];}}class Wechat implements PaymentMethod{public function pay(float $amount): array{return [channel wechat, status success];}}// 新增支付方式不需要修改现有代码class PaymentService{public function process(PaymentMethod $payment, float $amount): array{return $payment-pay($amount);}}?里氏替换原则。子类应该可以替换父类。phpabstract class Bird{abstract public function move(): string;}class Sparrow extends Bird{public function move(): string { return 飞; }}class Penguin extends Bird{public function move(): string { return 走; }}function makeBirdMove(Bird $bird): string{return $bird-move();}echo makeBirdMove(new Sparrow()) . \n;echo makeBirdMove(new Penguin()) . \n;?接口隔离原则。客户端不应该依赖它不需要的接口。phpinterface Workable{public function work(): void;}interface Eatable{public function eat(): void;}class HumanWorker implements Workable, Eatable{public function work(): void {}public function eat(): void {}}class RobotWorker implements Workable{public function work(): void {}}?依赖反转原则。依赖抽象而不是具体实现。phpinterface Storage{public function save(string $data): void;}class FileStorage implements Storage{public function save(string $data): void{file_put_contents(/tmp/data.txt, $data);}}class DatabaseStorage implements Storage{public function save(string $data): void{// 存储到数据库}}class DataManager{public function __construct(private Storage $storage) {}public function save(string $data): void{$this-storage-save($data);}}$manager new DataManager(new FileStorage());$manager-save(数据);?SOLID原则是面向对象设计的指导方针。遵循这些原则可以让代码更容易维护、测试和扩展。但也不需要过度设计在简单的场景中强行套用原则反而会增加复杂度。