要求破坏文件

时间:2011-09-02 00:31:25

标签: php oop destructor

我上课并且这样做:

function __destruct() {
    $this->load_file('epicEndingfile.php');
}

我收到一个错误: Warning: require(...) [function.require]: failed to open stream: No such file or directory

当我对__construct执行同样的操作时。那是为什么?

编辑:我实际上不需要文件,但我使用方法来执行此操作。

3 个答案:

答案 0 :(得分:1)

要求使用您的CD(当前目录),而不是您放置文件的目录。

它可能正在改变您的应用程序上下文(构造和销毁之间), 如果要根据当前文件提供相对文件路径,请使用:

require dirname(__FILE__)."/epicEndingfile.php";

在PHP 5.2及以下版本和

require __DIR__."/epicEndingfile.php";

在PHP 5.3 +

答案 1 :(得分:0)

您需要计算文件的位置。编写文件的方式,文件必须与调用函数的文件存在于同一目录中。添加完整路径,它应该可以工作。

require '/full/path/to/file/epicEndingfile.php';

答案 2 :(得分:0)

在__destruct方法中,首先执行echo getcwd();,您将在该阶段看到当前工作目录,确定此时已更改。

例如,如果您的类是在位于与主脚本不同的目录中的文件中定义的,则require将相对于类定义文件。

一个好主意总是定义一个包含脚本基本目录的常量。 所以在主php文件的第一行中,添加一个。

define('rootdir', dirname(__FILE__));
// you can replace dirname(__FILE__) with __DIR__ if it works in you PHP Version.

然后每次执行包含或要求相对于主脚本文件的文件时。

include rootdir. '/requires/include.php';

例如。