当我试图将脚本包含在另一个目录中时,我遇到了一个错误:为什么


I get an error when I try to include the script in another directory : Why is that?

以下脚本位于名为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

为什么?

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();

当您将first.php包含在包package_1中时,是什么促使您执行package_1'ashaar

将位置更改为:

require '..'package_1'first.php';

将位置更改为

include_once("..'package_1'first.php");

我认为您必须使用这样的名称空间。

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关键字,该关键字对于在另一个命名空间中使用代码至关重要。