# PHP-01 面向对象:从会写代码到会组织代码
前面的入门系列里,我们一直在写函数和过程代码。小项目这样写没问题,但项目一大,代码很容易变成一团。
面向对象(OOP)解决的不是“让代码更高级”,而是让代码拥有更清晰的边界。
## 1. 类和对象
```php
class User
{
public string $name;
public function sayHello(): string
{
return "Hello " . $this->name;
}
}
$user = new User();
$user->name = "Tom";
echo $user->sayHello();
```
`User` 是类,`$user` 是对象。
## 2. 构造函数
```php
class User
{
public function __construct(
public string $name,
public int $age
) {}
}
$user = new User("Tom", 20);
```
## 3. 封装
不是所有属性都应该让外部随便修改:
```php
class User
{
public function __construct(
private string $email
) {}
public function getEmail(): string
{
return $this->email;
}
}
```
## 4. 接口
接口可以让业务依赖“能力”,而不是某个具体实现:
```php
interface Cache
{
public function get(string $key): mixed;
public function set(string $key, mixed $value): void;
}
```
Redis 缓存、文件缓存都可以实现这个接口。
## 5. Trait
Trait 适合复用一小段横向能力:
```php
trait Loggable
{
public function log(string $message): void
{
echo $message;
}
}
```
不要把 Trait 当成“什么代码都往里面塞”的工具。
## 6. 实际项目怎么拆?
一个用户模块可能是:
```text
UserController
↓
UserService
↓
UserRepository
↓
Database
```
Controller 处理请求,Service 处理业务,Repository 处理数据访问。
## 7. 不要为了 OOP 而 OOP
一个几十行的小脚本没必要拆成十几个类。
OOP 的目的不是增加文件数量,而是让复杂代码拥有清晰边界。
## 小结
进阶 PHP 的第一步,是学会控制代码之间的关系,而不只是继续背语法。
- 点赞
- 收藏
- 关注作者
评论(0)