0

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

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

3 回答 3

2

您的命名空间应该在您的类之前声明,因此该类将属于该命名空间:

plist.php

 <?php
  namespace CFPropertyList; 

  class Plist{
      public function test() {
          echo 'Test';
      }
  }
?>

其他.php

 <?php
  require_once('plist.php');

  $plist = new CFPropertyList::Plist();
  $plist.test();
?>
于 2012-11-14T09:19:21.783 回答
1

您必须将命名空间定义放在类定义之外。(除了你的类定义似乎很乱。你没有任何类方法吗?)

于 2012-11-14T09:18:22.767 回答
1

Defining namespaces

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

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

于 2012-11-14T09:22:15.900 回答