Correction status:qualified
Teacher's comments:面向对象,最重要的思想就是代码复用,而代码复用最重要的手段就是类的继承(扩展)
对php命名空间简单理解
PHP 命名空间可以解决以下两类问题:
用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
在编程中每个类、函数等都有自己的名字以备调用、名字多了重复很常见。但重复就会出错,为了不重复就只能设置冗余过长的名字,因此命名空间就很好解决。就好像电脑硬盘 C盘 D盘 F盘 你可以在C盘有个dahuilang文件夹 也可以在D盘有个dahuilang 一级分类不满足 还可以二级分类 dahuilang\xiaohuilang 只要使用时候告诉程序 我是C盘dahuilang 他是D盘dahuilang即可区分 这样大大提高了名字的使用率还不会乱。利于团队合作 项目拓展。
===========================================分割线
类的继承与实现
简单小案例
<?php //命名空间 namespace User; // 类注册用户 class Reg { //实例属性 public $name;//名字 public $mobile;//手机号 public $uid;//用户id public $level;//用户等级 public function __construct($name,$mobile){ $this->name=$name; $this->mobile=$mobile; $this->uid=$uid=rand(1,1000); $this->level='注册会员'; } public function getId(){ return ['uid'=>$this->uid,'name'=>$this->name,'mobile'=>$this->mobile,'level'=>$this->level]; } } //子类Complete注册用户完善信息 继承 Reg类 class Complete extends Reg { //实例属性 public $sfzId;//***号 public $email;//邮箱 public function __construct($name,$mobile,$sfzId,$email){ parent::__construct($name,$mobile); $this->sfzId=$sfzId; $this->email=$email; $this->level='认证会员'; } public function getId(){ return ['uid'=>$this->uid,'name'=>$this->name,'mobile'=>$this->mobile,'sfzId'=>$this->sfzId,'email'=>$this->email,'level'=>$this->level]; } } //用户充值根据充值金额设置不同用户级别 class Pay extends Complete { public $money;//充值金额 public $balance;//账户余额 public function __construct($name, $mobile, $sfzId, $email,$money,$balance) { parent::__construct($name, $mobile, $sfzId, $email); $this->money=$money; $this->balance=$balance+$money; } public function pay(){ switch (true) { case $this->money>=10000 && $this->money<=29999 : $this->level='铜牌用户'; break; case $this->money>=30000 && $this->money<=49999 : $this->level='银牌用户'; break; case $this->money>=50000 && $this->money<=79999 : $this->level='金牌用户'; break; case $this->money>=80000 : $this->level='铂金用户'; break; default: $this->level<=0; return '充值金额不允许小于等于0'; break; } return ['uid'=>$this->uid,'name'=>$this->name,'mobile'=>$this->mobile,'sfzId'=>$this->sfzId,'email'=>$this->email,'level'=>$this->level,'money'=>$this->money,'balance'=>$this->balance]; } } //注册用户 $user1=new Reg('刘晓飞','13856568585'); echo '<pre>'.print_r($user1,true); echo $user1->uid.' '; echo $user1->level.' '; echo $user1->name.' '; echo $user1->mobile.' '; echo '<hr>'; //注册用户完善信息 完成身份认证 $user2=new Complete('王师傅','13542327777','610555198022223434','php@qq***'); echo '<pre>'.print_r($user2->getId()); echo '<hr>'; //用户进行充值 会员级别改变 $user3=new Pay('大灰狼','13868689898','610122199901011234','php@qq***',60000,1585); echo '<pre>'.print_r($user3->pay(),true); echo '<hr>'; //查看类中的属性 //$properties = get_class_vars(Pay::class); //echo '<pre>' . print_r($properties, true); // 查看类中方法 //$methods = get_class_methods(Pay::class); //echo '<pre>' . print_r($methods, true);
点击 "运行实例" 按钮查看在线实例