syntax issue on php 7.4

时间:2020-04-28 作者:Samuel

自从我尝试将php版本放在7.4上以来,我的WordPress平台上出现了一个syntex问题。

WordPress向我发送了自动电子邮件,错误如下:

错误详细信息

文件/public\\u html/wp-content/themes/bb-theme-child/companies的第12行中出现了E\\u-PARSE类型的错误。php。Error message: syntax error, unexpected \'fn\' (T_FN), expecting \'(\'

我把这里开始的文件公司。php代码,第12行是:function fn($function)

<?php

namespace DisplaceTech\\Companies;

/**
 * Wrap function names for the namespace.
 *
 * @param string $function
 *
 * @return string
 */
function fn($function)
{
    return \'\\DisplaceTech\\Companies\\\\\' . $function;
}

/**
 * Add the Clients metabox to the Proposal page.
 */
function add_clients_metabox()
{
    $screens = [\'page\'];
    foreach ($screens as $screen) {
        add_meta_box(
            \'clients\',              // Unique ID
            __(\'Clients\'),          // Box title
            fn(\'clients_box_html\'), // Content callback, must be of type callable
            $screen,                // Post type
            \'advanced\',             // Context
            \'high\'                  // Priority
        );
    }
}
add_action(\'add_meta_boxes\', fn(\'add_clients_metabox\'));
注意:该平台使用php 7.3

1 个回复
最合适的回答,由SO网友:Karthick 整理而成

Option 1

您是否尝试过更改函数名?类似的东西function getClientFn($function){}? 你可以保留你想要的任何名字。

function getClientFn($function){
    return \'\\DisplaceTech\\Companies\\\\\' . $function;
}

function add_clients_metabox(){
    $screens = [\'page\'];
    foreach ($screens as $screen) {
        add_meta_box(
            \'clients\',              // Unique ID
            __(\'Clients\'),          // Box title
            getClientFn(\'clients_box_html\'), // Content callback, must be of type callable
            $screen,                // Post type
            \'advanced\',             // Context
            \'high\'                  // Priority
        );
    }
}
add_action(\'add_meta_boxes\', \'add_clients_metabox\');
Option 2: 如果您真的需要保留“fn”方法,请尝试使用在php 7.4中工作的以下脚本。

$myfunction = fn($function) => \'\\DisplaceTech\\Companies\\\\\' . $function;

function add_clients_metabox(){
    $screens = [\'page\'];
    foreach ($screens as $screen) {
        add_meta_box(
            \'clients\',              // Unique ID
            __(\'Clients\'),          // Box title
            $myfunction(\'clients_box_html\'), // Content callback, must be of type callable
            $screen,                // Post type
            \'advanced\',             // Context
            \'high\'                  // Priority
        );
    } } add_action(\'add_meta_boxes\', \'add_clients_metabox\');