PHP 高手之路(三)完整攻略
概述
PHP 高手之路(三)是一篇较为深入的 PHP 语言技巧和实践文章,它包含了 PHP 领域的一些高级特性,例如:面向对象、设计模式、异常处理、事件管理等。本文假定你已经具备了 PHP 基础知识,并熟练掌握了 PHP 面向过程的编程实践。
目录
- 面向对象
- 类的定义与实例化
- 属性和方法
- 继承
- 抽象类和接口
- 魔术方法
- 设计模式
- 工厂模式
- 单例模式
- 注册模式
- 策略模式
- 适配器模式
- 异常处理
- 异常的定义和抛出
- 异常的捕获和处理
- 事件管理
- 事件的定义和触发
- 事件的监听和处理
面向对象
类的定义与实例化
在 PHP 中定义类使用关键字 class
,类名一般使用驼峰式命名。类中可以定义属性和方法,在实例化时需要用关键字 new
。
// 定义一个类
class Person {
public $name;
public $age;
public function sayHello() {
echo "Hello, I am " . $this->name;
}
}
// 实例化并调用方法
$person = new Person();
$person->name = "Tom";
$person->sayHello();
属性和方法
类中的属性和方法可以使用关键字 public
、private
、protected
修饰,分别表示公开的、私有的和受保护的。私有属性和方法只能在类的内部访问,受保护的属性和方法可以在类的内部和子类中访问。
class Person {
public $name; // 公有属性
protected $age; // 受保护属性
private $job; // 私有属性
public function sayHello() {
echo "Hello, I am " . $this->name;
}
protected function getAge() {
return $this->age;
}
private function getJob() {
return $this->job;
}
}
// 访问受保护属性和方法
class Student extends Person {
public function showAge() {
echo $this->getAge();
}
}
$student = new Student();
$student->name = "Jerry";
$student->showAge();
继承
子类可以继承父类的属性和方法,通过 extends
关键字实现。在子类中可以重写父类的方法,使用 parent::
调用父类的方法。
class Animal {
public $name;
public function move() {
echo "moving...";
}
}
class Dog extends Animal {
public function bark() {
echo "barking...";
}
public function move() {
echo "running...";
parent::move();
}
}
// 实例化并调用方法
$dog = new Dog();
$dog->name = "小狗";
$dog->move();
$dog->bark();
抽象类和接口
抽象类是一种没有具体实现的类,只能被继承,子类必须实现抽象类中的方法。接口是一种只定义方法签名(包括参数和返回值),而没有具体实现的类。
abstract class Shape {
abstract public function area();
}
interface Printable {
public function print();
}
class Square extends Shape implements Printable {
public $side;
public function area() {
return $this->side * $this->side;
}
public function print() {
echo "The area of the square is " . $this->area();
}
}
$square = new Square();
$square->side = 5;
$square->print();
魔术方法
魔术方法是一种特殊的方法,它们在类的对象被访问和修改时自动调用。
设计模式
异常处理
事件管理
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP 高手之路(三) - Python技术站