1

tester.php という名前のスクリプト

<?php
namespace my;
class Tester {
    public function greet() {
        echo "Hello ! <br />";
    }
}   

tester1.phpという名前の新しいスクリプト:

<?php
use my;

$obj = new Tester();
$obj->greet();

実行するtester1.phpと、次のエラーが表示されます。

Warning: The use statement with non-compound name 'my' has no effect
in /opt/lampp/htdocs/tester_1.php on line 2

Fatal error: Class 'Tester' not found in /opt/lampp/htdocs/tester_1.php on line 4

なぜこのエラーが発生するのですか? これらのスクリプトは両方とも同じディレクトリにあり/opt/lampp/htdocs/ます。

4

2 に答える 2

1

試す

<?php use my as Something;

これは機能します。

完全なコード。

First.php

<?php namespace my;
use my as Blah;
include("second.php");
$obj = new Tester();
$obj->greet();

second.php

<?php namespace my;
class Tester {
    public function greet() {
        echo "Hello ! <br />";
    }
}   

namespaceを含むコードの前に宣言する必要がありますdoctype

于 2013-02-18T05:43:38.320 に答える
1

use演算子は、使用できるように名前空間をインポートするのではなく、クラス/インターフェイス/名前空間名のエイリアスを作成するためのものです。namespace my;名前空間を使用するには、ファイルの先頭に置く必要がありtester1.phpます (また、クラス定義が利用できるように元のファイルも含めます)。

<?php
namespace my;
include("tester.php");

$obj = new Tester();
$obj->greet();

別の名前にエイリアスしたい場合は、次useのように使用できます。

<?php
namespace my;
use my\Tester as Blah;
include("tester1.php");

$obj = new Blah();
$obj->greet();
于 2013-02-18T05:38:43.297 に答える