PHP类函数声明问题 - php

我有一个函数重新声明问题。因此,我试图多次调用此示例。

class myClass {

    function abc() {

        function internal() {

        return "i am internal"; 
        }

    return internal();
    }

}


$myClass = new myClass();

echo $myClass->abc();
echo $myClass->abc(); // HERE IS THE PROBLEM when i call same function second time

PHP显示致命错误:无法重新声明internal()(先前声明)。

有谁知道如何解决这个问题?

提前致谢。

参考方案

使用function <name>()声明函数时,并不是在您认为的范围内声明它。该函数在类全局范围中声明,而不是在函数/类范围中声明。

请参阅PHP文档:http://www.php.net/manual/en/functions.user-defined.php#example-149

因此,当您调用abc时,您将重新声明全局函数internal

如果您想做自己想做的事情,可以改用closures(注意:这仅在PHP 5.3+中有效)。这样的好处是能够从abc内读取局部变量(如果使用use关键字)。

class myClass {

    function abc() {
        $internal = function() {
            return "i am internal"; 
        };

        return $internal();
    }
}

您还可以将internal声明为该类的私有函数,尤其是在它不会更改的情况下。为什么要继续重新制作功能?

class myClass {

    private function internal(){
        return "i am internal"; 
    }

    function abc() {
        return $this->internal();
    }
}

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-如何获取类的成员函数列表? - php

如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友

php ziparchive类源代码 - php

Improve this question 我如何获取ziparchive类本身的源代码。 参考方案 假设您在谈论PHP ZipArchive class:下载PHP source code并查找适当的文件。如果您希望源代码是PHP代码,您可能会感到失望,因为源代码是用C语言编写的。或者,也可以在PHP Github Development Reposito…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

PHP-如何建议搜索字词,“你是说……?” - php

当使用不检索任何结果的术语搜索数据库时,我想允许“您是不是……”建议(例如Google)。例如,如果有人寻找“ jquyer””,它将输出“ did you mean jquery?”当然,建议结果必须与数据库内部的值匹配(我正在使用mysql)。您知道可以做到这一点的图书馆吗?我已经用谷歌搜索过,但是没有找到任何好的结果。或者,也许您有一个想法,该如何独自…