数组中的WordPress I18N引发错误

时间:2018-05-20 作者:JUVO_Webdes

我正在编写我的第一个插件。为了将其发布到存储库,我希望使其可翻译。在我的选项页面上,我看到了一些数组,它们存储默认设置。不知怎的,我在实现i18n时出错了。

class SettingsPagePrivacyHelper {

    private static $optionGroup = \'privacy_helper_option_group\';
    private static $optionTitle = \'Simple Privacy Helper\';

    /*
     * Default Setting for Options
     */
    private $commentsDefaults = array(
        \'check\'             => 1,
        \'message\'           => __(\'Ich habe die ###Privacy-Policy### zur Kenntnis genommen. Ich stimme zu, dass meine Angaben zur Kontaktaufnahme und für Rückfragen dauerhaft gespeichert werden.\', \'privacy-helper\'),
        \'error\'             => __(\'Sie müssen die Bedingungen akzeptieren.\', \'privacy-helper\'),
        \'consent_check\'     => 0,
    );

    private $regDefaults = array(
        \'check\'             => 1,
        \'message\'           => __(\'Ich habe die ###Privacy-Policy### zur Kenntnis genommen. Ich stimme zu, dass meine Angaben gespeichert werden.\', \'privacy-helper\'),
        \'error\'             => __(\'Sie müssen die Bedingungen akzeptieren.\', \'privacy-helper\')
    );

    private $wcDefaults = array(
        \'check\'             => 1,
        \'message\'           => __(\'Ich habe die ###Privacy-Policy### zur Kenntnis genommen. Ich stimme zu, dass meine Angaben zur Verarbeitung des Kaufes und auf Grund der Nachweispflicht gespeichert werden.\', \'privacy-helper\'),
        \'error\'             => __(\'Sie müssen die Bedingungen akzeptieren.\', \'privacy-helper\'),
        \'reg-check\'             => 1,
        \'reg-message\'           => __(\'Ich habe die ###Privacy-Policy### zur Kenntnis genommen. Ich stimme zu, dass meine Angaben zur Verarbeitung des Kaufes und auf Grund der Nachweispflicht gespeichert werden.\', \'privacy-helper\'),
        \'reg-error\'             => __(\'Sie müssen die Bedingungen akzeptieren.\', \'privacy-helper\')
    );

    private $cf7Defaults = array(
        \'check\'             => 1,
        \'message\'           => __(\'Ich habe die ###Privacy-Policy### zur Kenntnis genommen. Ich stimme zu, dass meine Angaben zur Kontaktaufnahme und für Rückfragen dauerhaft gespeichert werden.\', \'privacy-helper\'),
    );

    private $ytDefaults = array(
        \'check\'             => 1,
    );
}
WordPress给了我以下错误:致命错误:常量表达式在[…]中包含无效操作/设置页面。php第11行

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

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

这是一个PHP问题,不特定于WordPress。

PHP不允许将属性声明为表达式。它应该是文字。因此,不能在属性声明内部调用函数。(请参阅中的无效属性声明。)http://php.net/manual/en/language.oop5.properties.php)

解决方案是创建一个getter方法并使用它。或者可以在\\uu construct()方法中设置属性。

例如,在construct上执行:

class MyClass {

    private $myProperty;

    function __construct() {
        $this->myProperty = [
            \'foo\' => __(\'bar\')
        ];
    }

}
或者作为一个获得者:

class MyClass {


    private function getMyProperty() {

        return [
            \'foo\' => __(\'bar\')
        ];


    }

}

结束