namespace和use

一、namespace命名空间

1、what?

php 5.3之后添加的新特性,用于表明一个文件的范围

2.why?

为了解决在同一个文件引入多个文件时,类名重复报错问题。比如,test_1.php里有个test类,test_2.php文件里也有一个test类,如果一个文件同时引入了这两个文件时,在PHP 5.2版本以前就会报错,那么,大家的做法就是把相应重名类改为不重名类,方可使用,但是一旦项目非常大,文件非常多的时候,显然是这不利于管理的,于是引入了namespace这个概念,用来圈定相同名字的类属于不同的区域。

3.example?

场景一:未使用namespace

#demo/test_1/test_1.php

<?php

class test{

      public function test() {

            echo __METHOD__;

      }

}

#demo/test_2/test_2.php

<?php

class test{

       public function test() {

            echo __METHOD__;

        }

}

#demo/demo.php

<?php

include 'test_1.php';

include 'test_2.php';

###报错:Cannot redeclare class test inD:\project\demo\test_2\test_2.phpon line2

#对test_1.php 和test_2.php分别添加命名空间:

namespace test_1;

namespace test_2;

#再访问demo.php就不会报错了,因为重名的test类已经分属于两个不同的区域了

#那么,如何使用命名空间?在demo.php 中添加如下代码:

$test_1 = new test_1\test();

echo $test_1->test();

echo '<br>';

$test_2 = new test_2\test();

echo $test_2->test();

#在demo文件中想要使用带有命名空间的文件时,必须是    “命名空间\类”   这样去使用








最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • PHP(一)基础语法 本来就是学习笔记,就不说废话了 参考 PHP 手册陈惠贞 , 陈俊荣.PHP 7&MySQL...
    cndaqiang阅读 1,109评论 1 1
  • 把当前目录作为Root Document只需要这条命令即可:php -S localhost:3300 也可以指定...
    绚烂的时光阅读 748评论 0 1
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,792评论 0 11
  • PHP7 已经出来1年了,PHP7.1也即将和大家见面,这么多好的特性,好的方法,为什么不使用呢,也希望PHP越来...
    梦幻_78af阅读 2,144评论 1 10