博主信息
博文 14
粉丝 1
评论 0
访问量 6723
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
实例演示类的扩展,抽象,接口的语法与命名空间的特点及用法
叫我孙大树
原创
461人浏览过
<?php
namespace global;
//实例演示类的扩展,抽象,接口的语法
class Normal{
    //标准类
    public $nor = '标准类的属性<br>';
    public function __construct(){
        echo '标准类的方法<br>';
    }
    public function getData(){
        echo $this->nor;
    }
}

class Extend extends Normal{
    public $ext = '继承类属性<br>';
    //标准类的继承类
    public function getData()//重写父类方法
    {
        echo $this->ext;
        parent::getData();//调用父类方法
    }
    public function newFunction(){
        //类扩展
        echo '我是继承类的新方法<br>';
    }
}

$a = new Extend();//实例化继承类
$a->getData();//继承类中重写的父类方法
$a->newFunction();//继承类新添加的方法
echo '<hr>';

//抽象类
abstract class Light{
     protected $name;
     protected int $maxLumin;
     public function __construct($lightName,$maxLumin){
         $this->name = $lightName;
         $this->maxLumin = $maxLumin;
     }
     abstract function switchOn();
}

class Philips extends Light{
    protected $color = ['red','yellow','white'];
    protected $status = false;
    public function switchOn()
    {
        $this->status?$this->status=false:$this->status=true;
        $chnStatus = $this->status?'开':'关';
        echo "我的品牌是飞利浦,我的名字是{$this->name},我的最大亮度是{$this->maxLumin}流明。当前状态是{$chnStatus}<br>";
    }
}

$n1 = new Philips('n1',1500);
$n1->switchOn();
$n1->switchOn();
$n1->switchOn();
$n1->switchOn();
$n1->switchOn();
echo '<hr>';

//接口
interface paymentInterface{
    function start();
    function pay();
}

class alipay implements paymentInterface{
    public function start()
    {
        echo '支付宝发起支付<br>';
    }
    public function pay()
    {
        echo '支付宝正在支付<br>';
    }
}
class wechatPay implements paymentInterface{
    public function start()
    {
        echo '微信发起支付<br>';
    }
    public function pay()
    {
        echo '微信支付正在支付<br>';
    }
}

class paymentService{
    protected $service;
    public function __construct(paymentInterface $service){
        //依赖反转
        $this->service = $service;
    }
    public function start(){
        $this->service->start();
    }
    public function pay(){
        $this->service->pay();
    }
}
$aliPay = new paymentService(new alipay());
$wechatPay = new paymentService(new wechatPay());
$aliPay->start();
$aliPay->pay();
$wechatPay->start();
$wechatPay->pay();
echo '<hr>';

//全局成员有哪些,他们有哪些特点?为什么要用命名空间, 描述命名空间的作用,以及声明方式, 跨空间成员的访问方式
/*
 * 全局成员包含php内置函数,它们可以在代码的任何地方调用。
 * 命名空间可以很好地解决代码重名问题,就像最简单的例子:同一个目录不允许同名文件存在,但是可以通过新建文件夹的方式来解决。
 */

//命名空间声明方式
namespace a;
function a(){
    return __NAMESPACE__.'命名空间里面的'.__FUNCTION__.'方法<br>';
}
echo a();
echo '跨命名空间的'.\b\a();

namespace b;
function a(){
    return __NAMESPACE__.'命名空间里面的'.__FUNCTION__.'方法<br>';
}
echo a();
echo '跨命名空间的'.\a\a();//跨命名空间的访问

运行实例 »

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

以上实例运行结果如下:

屏幕截图 2022-08-16 064955.jpg


批改老师:PHPzPHPz

批改状态:合格

老师批语:注意关键字的使用,尽量避免使用
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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

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