PHP学习笔记 10
来源:互联网 发布:电子杂志用什么软件 编辑:程序博客网 时间:2024/05/20 13:08
类
定义
类定义以关键字 class 开头,后面接类的名字,接着是一对大括号括起来的类体
class MyClass { // ...}
类中可以定义方法(函数)和属性(变量)
class MyClass { public function method() { // ... } private $property = value; }
访问控制符:
- private:仅在类中可以访问
- protected:在基类与子类中可以访问
- public:类内与类外都可以访问
$this 指代类对象自身
class MyClass { public function method() { echo $this->property; } private $property = value;}
使用 const 定义常量,常量默认为 public,通过ClassName::CONTANT访问常量,注意不加 $
class MyClass { const CONSTANT = value;}
使用 static 定义静态方法与属性,通过 ClassName::method() 与 ClassName::$property 访问静态方法与变量,
self 指代类自身
class MyClass { public static $x = 1; public static function method() { echo self::$x; }}
使用 spl_autoload_register() 自动加载类
spl_autoload_register(function ($class_name) { include $class_name . '.php';});
构造函数:function __construct()
- 析构函数:function __destruct()
对象
创建类实例使用 new 操作符
$myClass = new MyClass();
调用方法使用 -> 操作符
$myClass->method();
示例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Class Definition</title></head><body> <?php class Tank { // 构造函数 function __construct($shellCount) { $this->shellCount = $shellCount; echo 'construct<br>'; } // 析构函数 function __destruct() { echo 'destruct<br>'; } // 方法 public function fire(&$dest) { if ($this->shellCount <= 0) { echo 'No more shells!<br>'; return; } echo "Fire at (" . $dest['x'] . "," . $dest['y'] . ")<br>"; --$this->shellCount; } // 属性 private $shellCount = 0; // 常量 const MAX_LOAD_TON = 10; // 静态属性 private static $country = 'PRC'; // 静态方法 public static function country() { echo self::$country . "<br>"; } } // 使用 new 创建实例 $myTank = new Tank(10); $dest = array('x'=>100, 'y'=>100); for ($i = 0; $i < 11; ++$i) { $myTank->fire($dest); // 通过 object->method() 调用方法 } echo 'The maximum load for Tank is ' . Tank::MAX_LOAD_TON // 通过 ClassName::CONSTANT 访问类常量 . ' ton.<br>'; // 通过 ClassName::staticMethod() 访问静态方法 Tank::country(); ?></body></html>
查看运行结果
继承
- 使用 extends 实现继承
- 通过 final 修饰的类不可以被继承
- PHP中的方法默认为虚方法,在子类中可以重写
- 通过 final 修饰基类方法来禁止子类重写方法
- PHP不支持多继承
示例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Class Extends</title></head><body> <?php class Tank { public function fire(&$dest) { if ($this->shellCount <= 0) { echo 'No more shells!<br>'; return; } echo "Fire at (" . $dest['x'] . "," . $dest['y'] . ")<br>"; --$this->shellCount; } private $shellCount = 10; } class SuperTank extends Tank { public function fire(&$dest) { echo "Emit laser wave at (" . $dest['x'] . "," . $dest['y'] . ")<br>"; } public function dig() { echo "Now dig into earth<br>"; } public function dive() { echo "Now dive into water<br>"; } } $superTank = new SuperTank(); $dest = array("x"=>100, "y"=>100); $superTank->fire($dest); $superTank->dig(); $superTank->dive(); ?></body></html>
查看运行结果
抽象类
- 使用 abstract 定义抽象类
- abstract 修饰的方法为抽象方法,抽象方法没有实现
- 具有抽象方法的类必须是抽象类
- 抽象类指定了子类必须实现其抽象方法
示例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Abstract Class</title></head><body> <?php abstract class Vehicle { abstract public function move(&$dest); } class Tank extends Vehicle { public function move(&$dest) { echo "Moving to (" . $dest['x'] . "," . $dest['y'] . ") using track<br>"; } } $tank = new Tank(); $dest = array('x'=>100, 'y'=>100); $tank->move($dest); ?></body></html>
查看运行结果
接口
- 使用 interface 定义接口
- 使用 implements 实现接口
- 一个类可以实现多个接口,多个接口用逗号(
,
)分隔
示例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Interface</title></head><body> <?php interface Movable { function move(&$dest); } class Tank implements Movable { public function move(&$dest) { echo "Moving to (" . $dest['x'] . "," . $dest['y'] . ")"; } } $tank = new Tank(); $dest = array('x'=>100, 'y'=>100); $tank->move($dest); ?></body></html>
查看运行结果
阅读全文
0 0
- PHP学习笔记 10
- PHP学习笔记【10】--PHP函数
- PHP学习笔记10:函数
- php学习笔记--php基础
- PHP学习笔记 -- 初识PHP
- php学习笔记10-Exception Handling
- PHP学习笔记(一)
- php学习笔记:NULL
- PHP学习笔记
- Php 学习笔记
- php学习笔记-02
- php学习笔记-03
- php学习笔记-04
- PHP学习笔记-05
- PHP学习笔记
- 一周php学习笔记
- php学习笔记
- php 学习笔记
- 基于大数据平台构建移动端APM实践
- 联想thinkpad T460分区
- 简单爬虫入门-小说下载
- OOP技术特性
- hdu-2222-Keywords Search(AC自动机)
- PHP学习笔记 10
- web前端开发工具HBuilder使用技巧之快捷键
- Android停止运行问题1_layout布局xml问题
- Linux 批量修改文件名
- 奇怪的Java题:为什么128 == 128返回为False,而127 == 127会返回为True?
- Android获取时间
- Android获取时间2
- Xrecycleview多条目
- Android 获取当前时间问题1