2013-02-18 55 views
1

下面的脚本是名为package_1目录内:当我尝试将脚本包含在另一个目录中时出现错误:为什么?

<?php 
namespace ashaar; 
class Ghazal { 
    public function nameIt() { 
     echo "Dekh to dil ke jaan se utha hai <br />"; 
    } 
} 

和下面的脚本是名为package_2目录内:

<?php 
namespace package_1\ashaar; 
require 'first.php'; 
$obj = new Ghazal(); 
$obj->nameIt(); 

当运行上述脚本(该目录包2内)我收到一个错误:

Warning: require(\package_1\first.php): failed to open stream: No such file 
or directory in /opt/lampp/htdocs/package_2/second.php on line 3 

Fatal error: require(): Failed opening required '\package_1\first.php' 
(include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/package_2/second.php 
on line 3 

这是为什么?

回答

0

first.php

<?php 
namespace ashaar; 
class Ghazal { 
    public function nameIt() { 
     echo "Dekh to dil ke jaan se utha hai <br />"; 
    } 
} 

second.php

<?php 
namespace ashaar; 
require_once('../package_1/first.php'); 
$obj = new Ghazal(); 
$obj->nameIt(); 

是什么让你做package_1\ashaar当你包括first.php属于包裹package_1内。

0

位置更改为:

require '..\package_1\first.php'; 
+0

它没有帮助 – saplingPro 2013-02-18 07:40:55

+0

那么你的文件夹结构不是你所说的。文件夹树的截图? – 2013-02-18 07:45:11

+0

http://i49.tinypic.com/25ui3ac.png – saplingPro 2013-02-18 08:06:02

0

变化位置,因为

include_once("..\package_1\first.php"); 
-1

我认为你必须使用这样的命名空间。

first.php ...

<?php 
namespace package_1\ashaar; 
class Ghazal { 
    public function nameIt() { 
     echo "Dekh to dil ke jaan se utha hai <br />"; 
    } 
} 

second.php ...

<?php 

namespace package_2; 
require '../package_1/first.php'; 
use package_1\ashaar\Ghazal; 


$obj = new Ghazal(); 
$obj->nameIt(); 

use关键字在另一个命名空间中使用的代码是必不可少的。

+0

没有帮助... – saplingPro 2013-02-18 08:10:09

+0

我做了更改,现在它可以正常工作。更改使用关键字也嵌入加扎勒。 – 2013-02-18 08:16:59

+0

好的投票是好的。但至少应该给予评论,所以答案可以改进。 – 2013-02-18 13:37:53

相关问题