尝试使用我创建的命名空间时出错

时间:2013-02-18 05:29:02

标签: php namespaces

脚本名为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/

2 个答案:

答案 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