php的namespace
A. php命名空间namespace \app为什么前面不能加\
使用的时候加\代表后面是“绝对路径的”命名空间
不使用/代表“相对路径的”命名空间
这是在使用的时候。
namespace xxx 是声明命名空间。命名空间名字自然不应该有\
B. php namespace下如何使用include '*.phar'包下的类
namespace a
include 'c.phar'
class b{
public function test{
$r=new c\d\foo();//
C. PHP 的use 命名空间 是什么意思
有点类似于 java 中的包机制,用来解决重名问题的,每一个命名空间都是独立的
给你举个例子吧,比如我现在想写两个类,名字都叫 Action
<?php
namespaceA;//定义命名空间
classAction{
//..
}
namespaceB;//定义第二个命名空间
classAction{
//..
}
use 关键字用于导入某个命名空间下的类, 如果我在B空间内想使用A空间中的Action类,就需要导入这个类才能使用(当然也可以指明空间前缀来使用)
namespaceB;
//在本空间中需要使用A空间中的Action类,使用use导入
useAAction;//导入,如果本空间中也有一个Action会出现错误,因为类重名了
useAActionasA_Action;//通过取别名的方式解决
$var=newA_Action;
D. php命名空间的引入问题 include namespace
include函数是引入文件
命名空间解决的是同一脚本下相同函数重名,不同的命名空间命名,相当于处于不同的模块,解决同一脚本下php函数重名的致命错误
你之前include引入的时候你的2个文件的相同函数处于不同命名空间下,就算在同一脚本也不会报错
看你最后段代码,你连续定义了2个命名空间,第1个就没用了,相当于你在namespace FooBarsubnamespace;命名空间下写了之后的代码,但是之后的代码处于namespace FooBarsubnamespace;下但是出现了2个相同名的函数,自然报错
你要区分命名空间和include就要先懂得他们代表的意思,从你的问题可以看出你不太懂命名空间,建议你网络或者看下php手册上的命名空间,自己捉摸比别人教理解得更加深刻
建议你把namespace FooBarsubnamespace;写到const FOO = 2;上面