首页 > 解决方案 > 致命错误:未捕获错误:函数名称必须是 php/class-style-generator.php 中的字符串

问题描述

我在两个站点上遇到以下错误:

致命错误:未捕获错误:函数名称必须是 /home/lanesra2/public_html/wp-content/themes/Lanesra/framework/php/class-style-generator.php:123 中的字符串 堆栈跟踪:#0 /home/lanesra2 /public_html/wp-includes/class-wp-hook.php(286):

我已经很久没有登录这些网站了,正如你所看到的,它们都是基于 WordPress 构建的。任何可以解决它的潜在变化?

这里也是代码:

{
            foreach($this->rules as $rule)
            {

                $rule['value'] = str_replace('{{AVIA_BASE_URL}}', AVIA_BASE_URL, $rule['value']);
                $rule['value'] = preg_replace('/(http|https):\/\//', '//', $rule['value']);

                //check if a executing method was passed, if not simply put the string together based on the key and value array
                if(isset($rule['key']) && method_exists($this, $rule['key']) && $rule['value'] != "")
                {
                    $this->output .= $this->$rule['key']($rule)."\n";
                }
                else if($rule['value'] != "")
                {
                    $this->output .= $rule['elements']."{\n".$rule['key'].":".$rule['value'].";\n}\n\n";
                }

            }
        }

标签: phpwordpressfatal-error

解决方案


检查变量是否是一个字符串,不仅是它被设置,而且特别是它也是一个字符串。

if(is_string($rule['key']) && method_exists($this, $rule['key']) && $rule['value'] != "")

选择:

写得稍微短一点,论点少一点。无论如何,这都会强制该值是一个字符串;这取决于您的代码库是否适合您。

if(method_exists($this, (string)$rule['key']) && $rule['value'] != "")

请注意,此答案不能解决有时您的函数将非字符串作为潜在方法处理的问题。


推荐阅读