一、命名空间
1.命名空间是封装 类、方法的之中方式
2.默认情况下,默认同一空间下相同的 类 、函数 常量 仅能出现一次,为解决和管理名称相同但功能不尽相同的类、函数、常量的应用情况,可以引入命名空间的方式解决,命名空间通俗的理解就是相当于通过不同的目录结构将将具有相同名称的类 函数 常数区分的方法。
3.命名空间的定义,命名空间用namespace定义,必须放在简本语言php 文档开始的第一条语句
4.没有定义的命名空间可称为匿名空间,匿名空间相当于全局空间。
实例
namespace OneSpace\Test{ function test(){ echo __NAMESPACE__; } } namespace TwoSpace\TestSpace{ class Test{} //输出当前类所在的命名空间路径 echo Test::class; }
运行实例 »
点击 "运行实例" 按钮查看在线实例
二、类
对一种事物种不同具体对象的共同特点总结,进而抽象总结出各种不同具体对象所共有的事物属性和事物方法
类不具备独立执行的能力,他是对一类事物共同行为特点的总结,必须通过类实例化,建立类的实例化对象才能使用
类成员分为 类属性 类方法
类的属性,类的成员变量叫做类属性,属性声明是由关键字 public,protected 或者 private 开头
类用 class 用于定义 类名的首字母通常大写
类方法,又称为类的成员方法,
类通过 $this-> 访问成员变量 和成员方法
实例
<?php namespace _0731; /* * 类:是对一种事物种不同具体对象的共同特点总结,进而抽象总结出各种不同具体对象所共有的事物属性和事物方法 * 类不具备独立执行的能力,他是对一类事物共同行为特点的总结,必须通过类实例化,建立类的实例化对象才能使用 * * 类成员分为 类属性 类方法 * * 类的属性,类的成员变量叫做类属性,属性声明是由关键字 public,protected 或者 private 开头 * */ // 定义demo类 class 用于定义类 类名的首字母通常大写 class Demo { public $a ="我是Demo类的公开访问类型,类成员属性(成员变量) \$a"; public $b ='我是成员变量 b'; public function test($a,$b){ $this->a = $a; return $this->a.$b; } } $testClass = new Demo(); $x = "今天星期一"; $y = "所以早上7点必须出门去学校!"; //类变量输出 echo $testClass->a.'<br>'; // 输出 我是Demo类的公开访问类型,类成员属性(成员变量) //类方法() 输出 echo $testClass->test($x,$y).'<br>'; //输出 今天星期一所以早上7点必须出门去学校! //类变量输出 被成员方法更改了 echo $testClass->a.'<br>';// 输出 今天星期一
运行实例 »
点击 "运行实例" 按钮查看在线实例
三、构造函数与析构函数
构造函数用于对象实例化时的对象的初始化。
析构函数用于对象清理时对象数据的删除。
3.实例化一个数据库连接类
实例
<?php /** * Created by PhpStorm. * User: A * Date: 2019-08-01 * Time: 19:49 * 构造方法 */ namespace _0751; //定义一个车的类 use think\Exception; class Car { public $name = ""; public $color = ""; public $speed =""; public function drive(){ return $this->name."开着她那辆".$this->color."车,以时速".$this->speed."向远处驶去"; } //常规类的使用种,可以使用 __constrict() 进行对象实例初始化 public function __construct($a,$b,$c){ $this->name=$a; $this->color=$b; $this->speed=$c; } //析构方法 在对象被清理 被删除的时候 自动调用 该方法没有参数 __destruct() public function __destruct(){ echo "<h3>该对象已被清理</h3>"; } } $newCar =new Car("紫霞","红色","90公里/小时"); echo $newCar->drive();// 输出 紫霞开着她那辆红色车,以时速90公里/小时向远处驶去 unset($newCar); //数据库连接类 class DBConnect{ public $pdo=''; public function __construct($dns,$user,$password) { $this->dns = $dns; $this->user= $user; $this->password = $password; $this->connect(); } public function connect(){ try{ $this->pdo = new \PDO($this->dns,$this->user,$this->password); return $this->pdo; }catch (Exception $e){ die("数据库连接失败".$e->getMessage()); } } } $sql = NEW DBConnect("mysql:host=127.0.0.1;dbname=php","root","root"); if($sql){ echo '<h3>因为你要说道歉</h3>'; }
运行实例 »
点击 "运行实例" 按钮查看在线实例
四、类的继承
1、类的继承可以实现对父类的扩展和重写,包括成员变量的重写和扩展、成员方法的重写和扩展。
2、子类在使用过程种,如重写了父类方法,并不影响子类种调用父类成员方法的过程,调用使用parent::父类成员方法
实例
<?php namespace _0731; //定义一个车的类 use think\Exception; class Car { public $name = ""; public $color = ""; public $speed =""; public function drive(){ return $this->name."开着她那辆".$this->color."车,以时速".$this->speed."向远处驶去"; } //常规类的使用种,可以使用 __constrict() 进行对象实例初始化 public function __construct($a,$b,$c){ $this->name=$a; $this->color=$b; $this->speed=$c; } //析构方法 在对象被清理 被删除的时候 自动调用 该方法没有参数 __destruct() public function __destruct(){ echo "<h3>该对象已被清理</h3>"; } } //将 Car 当作一个父类 进行 类的继承讲解 父类也称为 基类 或超类 //类的继承第一个作用 扩展 成员属性 或者 成员方法 即 当前子类对父类进行某种方向的扩展 // Car1 继承 Car 的所有成员变量 和成员方法 class Bus extends Car { //成员扩展 public $driver = null; //方法重写 public function drive(){ return "那辆".$this->color."货车,被".$this->driver."撞在了墙上"; } } class Truck extends Car { //方法重写 public function drive(){ return $this->name."开着那辆".$this->color."大巴,缓缓的向着终点站牌驶去"; } }
运行实例 »
点击 "运行实例" 按钮查看在线实例