2012-01-20 11 views
2

私はphp5で最初のテストをしています。具体的には、私は名前空間で作業しようとしていますが、PHPが名前空間を解決していないようです。ここで私がやったテスト:PHPで名前空間を解決するには?

ファイル1:test.phpを

<? 
namespace \first_test; 

class Test { 
    function test_function(){ 
     print "works"; 
    } 
} 
?> 

ファイル2: 致命的なエラー:

<? 
use \first_test; 


$a=new \first_test\Test(); 
$a->test_function(); 
?> 

use_namespace.php私は致命的なエラーを取得するクラス " first_test \ Test 'は にありませんhere_the_path_where use_namespace.phpはありません。

助けてください。

P.S.両方のファイルは同じディレクトリにあり、Windowsではphp 5.3.9です。

+2

とにかくファイルを含めないでください。 – dynamic

+0

@ yes123、下記の私のコメントを読んでください。そこに私はなぜ推測するコメントする 私はファイルを含める必要はありません。 – xtarafa

答えて

2

名前空間を宣言するときに\は必要ありません。名前空間を宣言するときに関数を呼び出すときにのみ必要です。

<?php 
    namespace first_test; 

    // ... 
?> 

また、2回目の自分のファイルに、あなたはそれ以外の場合はfirst_testが何であるかを知らない、include test.phpする必要があります。

+0

もしあなたが 'use first_test;'を実行していれば、名前空間なしでクラスをインスタンス化することができます: '$ a = new Test;' – Alfwed

+1

こんにちは@Rocket。私が言ったように、これはテストです。ターゲットは、名前空間を使用するサードパーティのライブラリを使用することです。それは動作しませんでしたので、私は小さなセットテストを作成しました。私が知る限り、私はtest.phpを含めてはいけません。** use **でインポートするだけで十分です。確かに図書館にはいくつかのファイルがあり、誰も誰も含んでいません。名前空間を宣言し、**キーワードを使用してそれらをインポートするだけです。だから、私は名前空間を検出することを許可していないPHPの設定に関連することができると思いますか?私はinclude_pathとそれらのphpsが含まれているディレクトリの値をチェックしました。何か案が?どうも。 – xtarafa

+0

@xtarafa:名前空間がどのように機能するのかは分かりませんが、それは私が考えることができる最初のものでした。 –

関連する問題