php中的名称空间
我对在php中使用名称空间有点困惑,我想解释一下我在我的一个项目中遇到的问题 我在命名空间下有一个类php中的名称空间,php,namespaces,static-members,Php,Namespaces,Static Members,我对在php中使用名称空间有点困惑,我想解释一下我在我的一个项目中遇到的问题 我在命名空间下有一个类 namespace BigBlueButton; class BigBlueButton { public function createMeeting($createMeetingParams, $xml = '') { //some code return new CreateMeetingResponse($xml); } } 我把它
namespace BigBlueButton;
class BigBlueButton
{
public function createMeeting($createMeetingParams, $xml = '')
{
//some code
return new CreateMeetingResponse($xml);
}
}
我把它当作
use \BigBlueButton;
$bbb = new BigBlueButton\BigBlueButton();
//then I try to reference the variable $bbb in a function but I can't
function easymeet_create_meeting($id) {
// $bbb = new BigBlueButton\BigBlueButton(); I don't want to create a new object here but reference the object I created above,something like this
$bbb=BigBlueButton\bbb;
}
但我似乎无法访问上述变量,即$bbb,我尝试了
global$bbb
,但$bbb
似乎不在全局命名空间中,我知道我试图访问上述代码中的常量$bbb,但我还是展示了它,告诉大家我想做什么如果我理解正确,问题不在于名称空间
use \BigBlueButton\BigBlueButton;
function easymeet_create_meeting($id, BigBlueButton $bbb) {
/* ... */
}
$bbb = new BigBlueButton();
$result = easymeet_create_meeting(1234, $bbb);
正如您所说,您可以尝试使用全局变量,例如:
use \BigBlueButton;
global $bbb;
$bbb = new BigBlueButton\BigBlueButton();
function easymeet_create_meeting($id) {
global $bbb;
// you can use it
}
也可以将变量发送到函数
function easymeet_create_meeting($id, $bbb) {
}
我不知道整个问题,但您也可以在类中使用单例设计模式,这样每次使用时都会得到相同的实例。名称空间不会扩展到这样的变量: 在PHP世界中,名称空间设计用于解决两个问题: 库和应用程序的作者在创建 可重用的代码元素,如类或函数:
use
关键字,因为它应该引用特定的类,而不是命名空间
use \BigBlueButton\BigBlueButton;
function easymeet_create_meeting($id, BigBlueButton $bbb) {
/* ... */
}
$bbb = new BigBlueButton();
$result = easymeet_create_meeting(1234, $bbb);
您会注意到,我还将$bbb
移动到函数参数中,因为。这也是因为为什么不呢
更好的是:
class BigBlueButton implements ButtonInterface {}
class BigRedButton implements ButtonInterface {}
以及:
现在我们来看看基本的,这是一个好习惯。BigBlueButton\bbb不是一个变量。它是一个命名空间引用。。。