PHP面向对象编程基础:类、对象与核心特性详解

Ada
Ada
发布时间:2026-10-15| 6人浏览过
原创

掌握PHP面向对象编程是提升代码复用性与维护性的关键。通过定义类来抽象事物特征,结合构造函数初始化对象,并利用访问控制(public/protected/private)管理数据安全性。本文详细解析类与对象的创建流程、继承机制及静态方法的应用。

PHP面向对象编程核心概念

面向对象编程(OOP)通过将现实世界的事物抽象为“类”,并基于此创建“对象”来实现业务逻辑。理解类与对象的关系是入门PHP OOP的第一步。

第1步:理解基本术语

类(Class):定义了事物的抽象特点,包含成员变量和方法的模板。
对象(Object):类的具体实例,占用实际内存空间。
多态(Polymorphism):同一操作作用于不同对象可以产生不同的结果。
封装(Encapsulation):将属性和行为绑定在一起,隐藏内部实现细节。

第2步:在PHP中定义类

在PHP中,使用 class 关键字定义类。类内部包含成员变量和成员函数。推荐使用 $this 变量代表当前对象自身。

<?php
class Site {
    // 成员变量:使用var声明或直接在类内声明(PHP7.4+推荐类型提示)
    public $url;
    public $title;

    // 成员函数:设置URL
    function setUrl($par) {
        $this->url = $par;
    }

    // 成员函数:获取并输出URL
    function getUrl() {
        echo $this->url . PHP_EOL;
    }
}
?>

注意:变量 $this 代表调用该方法的当前对象实例。函数定义与普通PHP函数类似,但只能通过类或其对象访问。

对象实例化与构造方法

定义类后,需要将其实例化为对象才能使用。可以通过构造函数自动初始化对象属性。

第3步:实例化对象

使用 new 运算符创建类的实例:

// 创建两个Site实例
$baidu = new Site();
$taobao = new Site();

第4步:定义与调用构造函数

构造函数是在创建对象时自动调用的特殊方法,通常用于初始化对象属性。PHP中构造函数名为 __construct()。

<?php
class Site {
    private $url;

    // 构造函数:在new时自动执行
    public function __construct($initUrl) {
        $this->url = $initUrl;
    }

    public function getUrl() {
        return $this->url;
    }
}
?>

利用构造函数直接传入参数进行实例化:

$baidu = new Site('www.baidu.com');
echo $baidu->getUrl();

访问控制与关键字用法

为了保障数据安全,PHP提供了三种可见性修饰符,同时支持静态成员和最终类/方法的限制。

第5步:设置访问控制

- public(公有):在任何地方都可以被访问。
- protected(受保护):仅允许类本身、子类及父类访问。
- private(私有):仅允许在该类内部访问,继承类也无法访问。

第6步:使用static关键字

声明为 static 的方法或属性属于类本身,而非特定对象。可以不实例化直接通过 ClassName::method() 访问。需注意,静态属性不能通过对象实例($obj->staticVar)访问,但静态方法可以操作非静态内容(尽管不推荐这样设计)。

第7步:使用Final关键字

- Final 方法:如果父类方法声明为 final,子类不能重写该方法。
- Final 类:如果类声明为 final,则该类不能被继承。

继承与父类调用

PHP 不支持多重继承,但单继承非常强大。当子类需要扩展或修改父类功能时使用继承。

第8步:处理父类构造函数

PHP 不会自动调用父类的构造函数。如果子类重写了 __construct(),必须显式调用 parent::__construct() 以执行父类的初始化逻辑。

<?php
class Base {
    function __construct() {
        print "Base类构造方法执行" . PHP_EOL;
    }
}

class Sub extends Base {
    function __construct() {
        // 手动调用父类构造方法
        parent::__construct(); 
        print "Sub类构造方法执行" . PHP_EOL;
    }
}

// 测试
$obj = new Sub();
// 输出顺序:Base类... -> Sub类...
?>

第9步:方法重写(Override)

当父类的方法无法满足子类需求时,可以在子类中重新定义同名方法。这要求子类方法具有相同的签名或兼容的可见性。

以上就是PHP面向对象程序设计的核心要点,涵盖了从类定义到继承管理的完整流程。更多关于PHP高级特性的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。