2013-02-18 43 views
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/中。

回答

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

尝试

<?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

相关问题