博主信息
博文 36
粉丝 4
评论 3
访问量 39039
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
7.31 php命名空间、类的继承与实现
大灰狼的博客
原创
1655人浏览过

对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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学