博客列表 >7.31 php命名空间、类的继承与实现

7.31 php命名空间、类的继承与实现

大灰狼的博客
大灰狼的博客原创
2019年08月07日 14:48:151465浏览

对php命名空间简单理解

PHP 命名空间可以解决以下两类问题:

用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。

为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

在编程中每个类、函数等都有自己的名字以备调用、名字多了重复很常见。但重复就会出错,为了不重复就只能设置冗余过长的名字,因此命名空间就很好解决。就好像电脑硬盘 C盘 D盘 F盘 你可以在C盘有个dahuilang文件夹 也可以在D盘有个dahuilang 一级分类不满足 还可以二级分类 dahuilang\xiaohuilang   只要使用时候告诉程序 我是C盘dahuilang  他是D盘dahuilang即可区分 这样大大提高了名字的使用率还不会乱。利于团队合作 项目拓展。

===========================================分割线

类的继承与实现

简单小案例

1.jpg


实例

<?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);

运行实例 »

点击 "运行实例" 按钮查看在线实例


上一条:数据库操作类下一条:链式的数据库
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议