21.php命名空间
2016-02-20 12:08
656 查看
命名空间是对工程和类管理的一种替代解决方式,本质上是是语言设计缺陷大规避,目的是为了工程的方便管理和防止同名类的加载。
我们不使用命名空间,并引入另外一个文件,我创建了三个文件待用,main.php,lib1.php,lib2.php
我们放开上面namesapce的注释就不会再有问题。
对于命名空间的使用我们往往是根据文件的某一路径写成\PATH\TO\FILENAME。
下面说一下命名空间类之间的调用问题
直接使用本域中的类
Outputer::output();
使用被引用命名空间中的类
我们要使用别名来解决:
在lib2.php文件中并没有使用命名空间。现在我们要访问。
在访问之前加一个反斜杠就可以了
当然一个文件中可以使用多个命名空间,使用namespace SPACENAME{....}就可以创建 ,但是通常我们不会这么用。
我们不使用命名空间,并引入另外一个文件,我创建了三个文件待用,main.php,lib1.php,lib2.php
<?php /* * filename ./main.php * * */ /* namespace main; */ require_once './lib1.php'; class Outputer{ static function output() { echo __FILE__; } } Outputer::output();
<?php /* * filename lib1.php * * */ //namespace lib1; class Outputer{ static function output() { echo __FILE__; } }会出这样的警告,错误原因就是在全局空间中有两个完全一样的类。
我们放开上面namesapce的注释就不会再有问题。
对于命名空间的使用我们往往是根据文件的某一路径写成\PATH\TO\FILENAME。
下面说一下命名空间类之间的调用问题
直接使用本域中的类
<?php /* * filename ./main.php * * */ namespace main; require_once './lib1.php'; class Outputer{ static function output() { echo __FILE__; } }
Outputer::output();
使用被引用命名空间中的类
<?php /* * filename ./main.php * * */ namespace main; require_once './lib1.php'; class Outputer{ static function output() { echo __FILE__; } }明确告诉解释器,我要使用的域,这在搜索域特别长的时候很有效。
\lib1\Outputer::output();
<?php /* * filename ./main.php * * */ namespace main; require_once './lib1.php'; class Outputer{ static function output() { echo __FILE__; } } use lib1\Outputer; Outputer::output();这时候会出错,回到老问题上去了。
我们要使用别名来解决:
<?php /* * filename ./main.php * * */ namespace main; require_once './lib1.php'; class Outputer{ static function output() { echo __FILE__; } }
use lib1\Outputer as lOutputer;
lOutputer::output();
在lib2.php文件中并没有使用命名空间。现在我们要访问。
<?php /* * filename lib2.php * * */ class Outputer{ static function output() { echo __FILE__; } }
在访问之前加一个反斜杠就可以了
<?php /* * filename ./main.php * * */ namespace main; require_once './lib1.php'; class Outputer{ static function output() { echo __FILE__; } }
use lib1\Outputer as lOutputer;
lOutputer::output();
require_once 'lib2.php';
\Outputer::output();
当然一个文件中可以使用多个命名空间,使用namespace SPACENAME{....}就可以创建 ,但是通常我们不会这么用。
相关文章推荐
- php.ini 配置详细选项
- PHP 数组操作积累记录
- php不经编译直接输出html
- php7安装
- yii 2 局部关闭 CSRF 拦截
- TP:F7F4FC64
- php解决下单、抽奖并发导致的库存负数的问题
- php开启短标签
- PHP中empty()和isset()的区别
- php 短信验证 容联短信验证
- php正则表达式的基本语法
- 可视化——matplotlib常见api(四)
- Debian安装使用tftp
- RHEL7学习之crontab无法执行ntpdate
- php解析xml,并将xml转换为层级数组
- php分享十八:网页抓取
- ThinkPHP的URL重写时遇到No input file specified的解决方法
- ContentProvider:读取手机通讯录、号码等信息(16)
- JFrame的setBackGround与getContentPane().setBackground区别
- 从耳机接口的OMTP和CTIA标准说起