当前位置:首页 > PHP

php面向对象实现

2026-03-13 06:00:16PHP

PHP 面向对象编程实现

面向对象编程(OOP)是 PHP 的核心特性之一,通过类、对象、继承、封装和多态等概念实现代码的模块化和复用。

类与对象

定义一个类使用 class 关键字,通过 new 关键字实例化对象:

class Car {
    public $color;
    public function startEngine() {
        echo "Engine started!";
    }
}

$myCar = new Car();
$myCar->color = "red";
$myCar->startEngine();

构造函数与析构函数

构造函数在对象创建时自动调用,析构函数在对象销毁时触发:

class Person {
    public $name;
    public function __construct($name) {
        $this->name = $name;
    }
    public function __destruct() {
        echo "Object destroyed";
    }
}

$person = new Person("Alice");

访问修饰符

控制属性和方法的访问权限:

  • public:全局可访问
  • protected:仅类内和子类可访问
  • private:仅类内可访问
    class Example {
      public $publicVar;
      protected $protectedVar;
      private $privateVar;
    }

继承

子类继承父类的属性和方法:

class Animal {
    public function eat() {
        echo "Eating...";
    }
}

class Dog extends Animal {
    public function bark() {
        echo "Woof!";
    }
}

$dog = new Dog();
$dog->eat();
$dog->bark();

方法重写

子类可以重写父类方法:

class Bird {
    public function fly() {
        echo "Flying high";
    }
}

class Penguin extends Bird {
    public function fly() {
        echo "I can't fly";
    }
}

静态属性和方法

无需实例化即可访问:

class Math {
    public static $pi = 3.14;
    public static function square($num) {
        return $num * $num;
    }
}

echo Math::$pi;
echo Math::square(5);

接口

定义方法规范,类必须实现所有接口方法:

interface Logger {
    public function log($message);
}

class FileLogger implements Logger {
    public function log($message) {
        file_put_contents('log.txt', $message);
    }
}

抽象类

包含抽象方法和具体方法,不能直接实例化:

abstract class Shape {
    abstract public function area();
    public function printArea() {
        echo "Area: " . $this->area();
    }
}

class Circle extends Shape {
    private $radius;
    public function __construct($radius) {
        $this->radius = $radius;
    }
    public function area() {
        return pi() * $this->radius * $this->radius;
    }
}

命名空间

组织代码避免命名冲突:

namespace MyProject;

class MyClass {
    // class implementation
}

$obj = new \MyProject\MyClass();

自动加载

使用 spl_autoload_register 自动加载类文件:

spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.class.php';
});

$obj = new MyClass();

魔术方法

特殊方法在特定事件时自动调用:

class Magic {
    public function __get($name) {
        echo "Getting $name";
    }
    public function __set($name, $value) {
        echo "Setting $name to $value";
    }
    public function __call($name, $arguments) {
        echo "Calling $name with " . implode(', ', $arguments);
    }
}

对象克隆

使用 __clone 方法控制对象复制行为:

class Cloneable {
    public $data;
    public function __clone() {
        $this->data = "Cloned data";
    }
}

$obj1 = new Cloneable();
$obj1->data = "Original";
$obj2 = clone $obj1;
echo $obj2->data; // Outputs "Cloned data"

类型声明

PHP 7+ 支持参数和返回值类型声明:

class Calculator {
    public function add(float $a, float $b): float {
        return $a + $b;
    }
}

匿名类

PHP 7+ 支持即时创建匿名类:

$logger = new class {
    public function log($msg) {
        echo $msg;
    }
};

$logger->log("Hello");

Trait

解决 PHP 单继承限制,代码复用机制:

trait Loggable {
    public function log($msg) {
        echo $msg;
    }
}

class User {
    use Loggable;
}

$user = new User();
$user->log("User created");

对象序列化

将对象转换为字符串存储或传输:

php面向对象实现

class SerializableClass {
    public $data;
}

$obj = new SerializableClass();
$obj->data = "Important data";
$serialized = serialize($obj);
$unserialized = unserialize($serialized);

标签: 面向对象php
分享给朋友:

相关文章

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php 线程实现

php 线程实现

PHP 线程实现方法 PHP 本身是单线程语言,但可以通过扩展或库实现多线程功能。以下是几种常见的实现方式: 使用 pthreads 扩展 pthreads 是一个 PHP 扩展,允许在 PHP 中…

php 路由实现的

php 路由实现的

PHP 路由实现方法 基于原生 PHP 实现路由 创建一个简单的路由解析器,通过解析 URL 路径来调用对应的控制器或函数。 // 定义路由表 $routes = [ '/' => '…

php实现注册登陆

php实现注册登陆

PHP 注册功能实现 创建数据库表结构(MySQL示例): CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php实现多态

php实现多态

多态的概念 多态是面向对象编程的三大特性之一,指同一个方法在不同类中有不同实现方式。PHP通过继承和接口实现多态。 通过继承实现多态 父类定义方法,子类重写该方法实现不同行为: class Ani…

php无法实现的

php无法实现的

PHP 的局限性 PHP 是一种广泛使用的服务器端脚本语言,主要用于 Web 开发。尽管功能强大,但在某些场景下存在局限性。 操作系统级开发 PHP 不适合编写操作系统内核或底层驱动程序。这类任务通…