php教程|php手册
PHP,命名空间,使用技巧,namespace
php教程-php手册
PHP命名空间(namespace)的动态访问及使用技巧,命名空间namespace
拍购源码,vscode前端必备插件,ubuntu 查找,Tomcat启动失败,sqlite3 函数,网页设计师ui,discuz 数据库 在哪里,asp服务器环境搭建,ecshop推荐人列表插件,前端框架的作用,股票爬虫,php上传文件,seo优化软件,springboot和springmvc区别,代替手动修改网站模板标签,易语言表白网站源码,html5加载网页动画,phpwind 手机模板,后台管理界面设计时宽度为多少,微信返回页面代码实现,php电子图书管理系统,返利网多级返利程序lzw
PHP的命名空间(namespace)是PHP 5.3中加入最重要的一个新特性,这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的。
小程序留言墙源码,ubuntu安装g 出错,tomcat源码中类的介绍,安康爬虫ip厂,net和php可以同时用吗,游戏seo编辑lzw
一.动态访问命名空间的元素
城市分站源码分类信息,vscode插件开发缓存,ubuntu $path,tomcat6 内存设置,sqlite数据库拼接,家乡网页设计模板,php数据库导入,电信服务器租用价格,js爆炸动画效果插件,前端vue框架面试题,如何编写爬虫程序,php apc,seo编程,springboot文件商城,织梦列表页下一页标签,微信营销网站(含html源文件)免费下载,网页帐号管理源码,java开发文档模板,bootstrap 后台管理系统,维护页面模板,云点滴客户关系管理系统,易语言程序化交易lzw
namespace me\poet;function test(){ echo 1111;}$fun = est;//不能这么用,最后$fun()无法动态调用到test():Fatal error: Call to undefined function test()$fun = \me\poet\test;//正确//$fun = me\poet\test;//正确$fun();
也就是说,动态调用必须是 限定名称 或 完全限定名称(概念参考:PHP命名空间的使用基础)
二.魔术常量 和 操作符
namespace me\poet;function test(){ echo 1;}echo __NAMESPACE__;//魔术常量:命名空间的名称(输出 me\poet)//namespace操作符:显式访问当前命名空间或子命名空间中的元素,等价于类中的self操作符\me\poet\test();namespace\test();//上两行代码等价。
三.别名、导入 和 全局空间(含多个例子)
namespace ws\weichen\www;use ws\weichen\www as poet;//定义别名poet//use ws\weichen\www; //不加as,则取最后的作为别名(www)function demo(){ echo 1;}\ws\weichen\www\demo();poet\demo();//www\demo();//不加as的情况,则这样调用
以上三行代码效果一样。
按规则(ws\weichen\www)命名的好处:若更换域名,只要把前缀名称改了就可以,不影响后面代码中别名www的使用。
/* 导入 */include hello.class.php;use \ws\weichen\www;use \Hello;/*--------------------------------------------------------*//* 支持多个use语句 */use \nihao\shijie as hello, \ws\weichen\www;/*--------------------------------------------------------*//* 全局空间:反斜线调用 */namespace A\B\C;//这个函数是 A\B\C\fopen();function fopen(){ $f = \fopen(demo.txt);//调用全局fopen函数 return $f;}
php namespace 命名空间出错?
语法上没有任何问题。
你的PHP版本是多少?PHP在5.3.0版本以后开始支持命名空间。你的PHP版本可能比较低。
php use php namespace 到底是怎一回事
1. namespace Zend\Http\PhpEnvironment;
这句代码定义了一个命名空间,你可以理解为定义一个名称为 Zend\Http\PhpEnvironment 的域名。
在定义了之后,下面所申明的class, interface, const等都是在申明的这个“域”里面的。当引用一个申明了命名空间的包含文件,想要调用这个里面的东西,那就必须:
调整当前脚本也到这个域名里,否则,就得用namesapce的全称。
比如,inc.php 文件:
namespace Zend\Http\PhpEnvironment;
class Bar {}//定义了一个类
则其他文件调用时:
// 访问Foo的第一种方法,用全称
require ‘inc.php’;
$foo = new \Zend\Http\PhpEnvironment\Bar();
// 访问Foo的第二种方法
namespace Foo; // 调整当前脚本到Foo这个ns域,而且namespace申明必须在第一句
require ‘inc.php’;
$foo = new Bar();
2. use关键字目的是使用ns的别名:
比如说,上面的
// 访问Foo的第一种方法,用全称
require ‘inc.php’;
$foo = new \Zend\Http\PhpEnvironment\Bar();
用uses后,写法如下:
use \Zend\Http\PhpEnvironment as pe; //定义别名
$foo = new \pe\Bar(); //用短的别名来代替原来的
如果省略后面的as ….,那么,就可以直接用最后一节的文字来代替,比如,上面的:
use \Zend\Http\PhpEnvironment; //定义别名
$foo = new \PhpEnvironment\Bar();//用短的别名来代替原来的
================================================
php官方手册中的相关内容:
在PHP中,namespace命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径。
PHP 命名空间支持有两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名, 别名通过操作符 use 来实现。…余下全文>>