跳到主要内容

oop

面向对象 OOP 概览

类与接口、Trait、可见性、继承与多态、魔术方法、命名空间。

抽象类/接口/Trait

  • 抽象类:可实现部分逻辑,提供抽象方法:
abstract class Repo { abstract public function find(int $id); }
  • 接口:仅声明签名,多实现:
interface Logger { public function info(string $m): void; }
  • Trait:复用片段,避免菱形继承:
trait Singleton { private static $i; public static function get(){ return self::$i ??= new static(); } }

依赖注入与容器

  • 通过构造函数注入接口;使用容器(如 Laravel IOC)绑定实现:$app->bind(Logger::class, FileLogger::class);

设计模式示例(策略)

interface Tax { public function calc(float $n): float; }
class CN implements Tax { public function calc(float $n): float { return $n*0.06; } }
class US implements Tax { public function calc(float $n): float { return $n*0.07; } }

class Checkout {
public function __construct(private Tax $tax) {}
public function total(float $n): float { return $n + $this->tax->calc($n); }
}