Blogger Information
Blog 14
fans 1
comment 0
visits 4527
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
实例演示类的扩展,抽象,接口的语法与命名空间的特点及用法
叫我孙大树
Original
292 people have browsed it
<?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


Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:注意关键字的使用,尽量避免使用
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments