gpt4 book ai didi

PHP - 定义时调用未定义的函数

转载 作者:行者123 更新时间:2023-11-29 08:14:11 24 4
gpt4 key购买 nike

我的问题是我有两个函数,我尝试在另一个函数中调用一个函数,但收到错误消息未定义。这是我的代码:

        class LoggedUser extends User {
public function rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object);
}
}
reset($objects);
rmdir($dir);
}
}

public function usunGalerie($galeria,$log,$folder){
require_once('db_connect.inc');
$query = "DELETE FROM galery WHERE Nazwa='$galeria' AND Autor='$log';";
$result = @mysql_query($query);
if(!$result = mysql_query($query))
{
echo '<code>$query</code> &rarr; '.mysql_error().' ('.mysql_errno().')';

}
$query = "DELETE FROM zdjecie WHERE Galeria='$galeria' AND Autor='$log';";
$result2 = @mysql_query($query);
if ($result && $result2) {
echo 'Usunięto galerię '.$galeria;
$this->rrmdir($folder);
} else {
echo 'Wystąpił błąd.';
}
}
}

然后我得到:调用未定义的函数 rrmdir()我尝试在不使用 $this-> 的情况下调用它,但它是相同的。

请问有人可以帮助我吗?

最佳答案

一旦您进入面向对象的 PHP 世界,作用域的工作方式就会发生变化。一旦声明了类的实例,您现在必须引用该类的实例以及函数本身。这在其他语言(如 Java)中的工作方式确实有所不同,其中方法被假定在非静态上下文中的实例本身内调用。

下面的行再次调用该函数

if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object);

即使认为它在它所调用的函数内部(递归,小心),您仍然需要引用对象实例。确保对 rrmdir 的所有调用都包含 $this

if (filetype($dir."/".$object) == "dir") $this->rrmdir($dir."/".$object); else unlink($dir."/".$object);

关于PHP - 定义时调用未定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com