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

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 回答
1

尝试

<?php use my as Something;

这会奏效。

完整的代码。

第一.php

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

第二个.php

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

您需要namespace在任何代码之前声明,包括doctype

于 2013-02-18T05:43:38.320 回答