命名空间如何在PHP中工作

时间:2012-11-14 09:16:49

标签: php namespaces

我正在尝试实例化一个使用命名空间的类。

<?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();

3 个答案:

答案 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)

来自Defining namespaces

  

使用namespace关键字声明命名空间。包含的文件   命名空间必须先在文件顶部声明命名空间   任何其他代码 - 有一个例外:declare关键字。

所以你必须在文件的顶部声明它。