0

名前空間を使用するクラスをインスタンス化しようとしています。

<?php
namespace CFPropertyList;   

require_once('CFPropertyList/CFPropertyList.php');

$plist = new CFPropertyList();
?>

それは働いています!

しかし、そのコードをクラスに入れようとすると、構文エラーが発生します。「namespace 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';
      }
  }
?>

other.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

名前空間は、namespace キーワードを使用して宣言されます。名前空間を含むファイルは、他のコードよりも前にファイルの先頭で名前空間を宣言する必要があります。1 つの例外は、declare キーワードです。

したがって、ファイルの先頭で宣言する必要があります。

于 2012-11-14T09:22:15.900 に答える