脚本名为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/
。
答案 0 :(得分:1)
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();
答案 1 :(得分: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