首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中的魔术方法

中的魔术方法
EN

Stack Overflow用户
提问于 2017-03-31 08:29:14
回答 1查看 53关注 0票数 0

我的PHP以常量的形式包含可翻译的值。通过使用常量的名称调用类,应该返回格式化的值。

代码语言:javascript
复制
class Test {
    const translation_value = 'Foo %s, bar %s';
    public static function __callStatic($string, $args) {
        return vsprintf(constant("self::" . $string), $args);
    }
}

如果我通过Test::{"translation_value"}(["test", "test2"]);调用类,PHP会显示两个错误:

注意:数组到字符串转换..。在第4行 PHP警告: vsprintf():参数太少.在第4行

我做错了什么?

如果我通过手动调用vprintf函数(vsprintf("Foo %s, bar %s", ["val1", "val2"]);)来测试vprintf函数,PHP就会创建预期的输出:Foo val1,bar val2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-31 08:40:24

__callStatic($string, $args)的第二个参数是参数列表。您有一个参数,所以您需要使用数组的第一个元素:

代码语言:javascript
复制
return vsprintf(constant("self::" . $string), $args[0]);

或者用平面参数调用它:

代码语言:javascript
复制
Test::translation_value("test", "test2");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43136023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档