2013-02-18 32 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

相關問題