laravel 8 - 我可以访问配置中常量内的变量吗

laravel 8 - can i access a variable inside a constant inside my config

我有一系列用于应用程序的常量字符串,放置在我的配置目录中名为 gameconstants 的文件中

我正在使用 config() 函数获取各种消息,因此该文件看起来与此类似

return [

'furiouspunches' => ' furiously punches ',
'kick' => ' kicks $loser in the junk ',

有没有办法让我访问那个 $loser 变量?我将这些常量用于我正在构建的应用程序的 return 字符串,所以我最终连接了这个 returned 值,最终输出类似于

$winner . config('gameconstants.kick') . $loser

但是字符串并不总是像现在这样很好地演奏,所以我想访问该变量,这样我就可以 return 该字符串的不同变体。

我试过了

配置('gameconstants.kick.$loser') 但这是行不通的。有什么想法吗?

提前致谢。

您需要使用字符串替换,例如

return [

'furiouspunches' => ' furiously punches ',
'kick' => ' kicks {loser} in the junk ',

然后

$string = $winner . str_replace('{loser}', $loser, config('gameconstants.kick'))

您可以使用翻译文件而不是配置文件。翻译文件也支持参数替换。

resources/lang/en/strings.php 创建一个文件:

<?php

// resources/lang/en/strings.php

return [
    'furiouspunches' => ' furiously punches ',
    'kick' => ' kicks :loser in the junk ',
];

然后使用双下划线方法 (__()) 访问您的字符串,并传入占位符值数组:

$string = $winner . __('strings.kick', ['loser' => $loser]);

您可以阅读 translation documentation and variable substitution here


根据您的用例,您可能希望在字符串中包含这两项。也许是这样的:

<?php

// resources/lang/en/strings.php

return [
    'furiouspunches' => ':subject furiously punches :object',
    'kick' => ':subject kicks :object in the junk',
];

然后传入两个替换:

$string = __('strings.kick', ['subject' => $winner, 'object' => $loser]);