批改状态:合格
老师批语:注意关键字的使用,尽量避免使用
<?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();//跨命名空间的访问点击 "运行实例" 按钮查看在线实例
以上实例运行结果如下:

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