以下是PHP面向对象编程核心特性的详细解析:
一、类与对象
-
类定义
class Person { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function sayHello() { echo "Hello, I'm {$this->name}"; } }
-
对象实例化
$person = new Person("Alice", 30); $person->sayHello(); // 输出:Hello, I'm Alice
二、三大核心特性
-
封装
class BankAccount { private $balance = 0; public function deposit($amount) { if ($amount > 0) { $this->balance += $amount; } } public function getBalance() { return $this->balance; } }
-
继承
class Employee extends Person { private $position; public function __construct($name, $age, $position) { parent::__construct($name, $age); $this->position = $position; } }
-
多态
interface Shape { public function area(); }
class Circle implements Shape {
public function area() { / 实现 / }
}
class Square implements Shape {
public function area() { / 实现 / }
}
### 三、高级特性
1. **魔术方法**
```php
class Magic {
public function __toString() {
return "Magic Object";
}
public function __invoke() {
echo "对象被当作函数调用";
}
}
- 命名空间
namespace MyProject;
class Database {
// 类实现
}
3. **Traits**
```php
trait Loggable {
public function log($message) {
echo "[LOG] $message";
}
}
class User {
use Loggable;
}
四、接口与抽象类
- 接口
interface Logger { public function log($message); }
class FileLogger implements Logger {
public function log($message) {
file_put_contents(‘log.txt’, $message);
}
}
2. **抽象类**
```php
abstract class Animal {
abstract public function makeSound();
public function sleep() {
echo "Sleeping...";
}
}
class Dog extends Animal {
public function makeSound() {
echo "Woof!";
}
}
五、最佳实践建议
- 优先使用组合而非继承
- 单一职责原则:每个类专注一个功能
- 合理使用接口定义契约
- 大型项目推荐使用PSR标准
- 使用类型声明和返回类型声明(PHP7+)
建议通过实际项目练习,例如构建用户管理系统(User CRUD)、实现支付接口适配器等,来巩固这些面向对象概念。