我正在尝试实例化一个使用命名空间的类。
<?php
namespace CFPropertyList;
require_once('CFPropertyList/CFPropertyList.php');
$plist = new CFPropertyList();
?>
那是有效的!
但是当我尝试将该代码放入我的类时,我会遇到语法错误。我不能使用“命名空间CFPropertyList;”在课堂上?
<?php
class Plist{
public function test(){
namespace CFPropertyList;
require_once('CFPropertyList/CFPropertyList.php');
$plist = new CFPropertyList();
}
}
?>
更新:
感谢所有我的工作。
<?php
namespace CFPropertyList;
require_once('CFPropertyList/CFPropertyList.php');
class Plist{
public function test(){
//some code
}
}
}
但是我现在在命名空间中拥有自己的类吗?抱歉没有问题。 我做不到。
$plist = new Plist;
$plist->test();
答案 0 :(得分:2)
您的命名空间应该在您的类之前声明,因此该类将属于该命名空间:
plist.php
<?php
namespace CFPropertyList;
class Plist{
public function test() {
echo 'Test';
}
}
?>
other.php
<?php
require_once('plist.php');
$plist = new CFPropertyList::Plist();
$plist.test();
?>
答案 1 :(得分:1)
您必须将命名空间定义放在类定义之外。 (除此之外,你的类定义似乎很混乱。你有没有任何类方法?)
答案 2 :(得分:1)
使用namespace关键字声明命名空间。包含的文件 命名空间必须先在文件顶部声明命名空间 任何其他代码 - 有一个例外:declare关键字。
所以你必须在文件的顶部声明它。