得到一个错误,而试图使用我创建
问题描述:
命名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/
中。
答
use
operator用于别名类/接口/名称空间名称,而不是导入名称空间以便可以使用。要使用你的命名空间,你只需要把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();
答
尝试
<?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