《php面向对象》 第15课:命名空间

命名空间是在php5.3版本以加入的。

命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。

默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样。

命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。

比如,我们创建一个文件:student.php

<?php
namespace model; //定义命名间

//类Student在model命名空间中
class Student
{
    public function say(){
        echo 'hello';
    }
}

我们创建一个测试文件:test.php

<?php
use model\Student; //引入 model命名空间的Student 类

require_once 'student.php';

$stu = new Student();
$stu->say();

要想使用命名空间中的类,必须要引入这个类,如:use model\Student

引入命名空间的类时,也可以给类重新命名,原有的类名不能再使用。

<?php
use model\Student as Stu; //引入 model命名空间的Student 类,并重命名为Stu

require_once 'student.php';

$stu = new Stu();
$stu->say();

在有些场景下必须给类重新命名,比如还有一个类也是Student,在文件student2.php中

<?php

namespace controller;

class Student
{
    public function showme()
    {
        echo '自我介绍';
    }
}

那么在test.php中如何同时使用这两个student类呢?

<?php
use model\Student as StuModel;
use controller\Student as StuController;

require_once 'student.php';
require_once 'student2.php';

$stu1 = new StuModel();
$stu1->say();

$stu2= new StuController();
$stu2->showme();

给引入的类重新命名,解决了难题。

在后续的课程中,我们定义的类都使用了命名空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李 书 明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值