laravel 8 - 我可以在我的配置中访问常量内的变量吗
Posted
技术标签:
【中文标题】laravel 8 - 我可以在我的配置中访问常量内的变量吗【英文标题】:laravel 8 - can i access a variable inside a constant inside my config 【发布时间】:2021-12-21 18:48:42 【问题描述】:我有一系列用于应用程序的常量字符串,放置在我的配置目录中名为 gameconstants 的文件中
我正在使用 config() 函数来获取各种消息,因此文件看起来类似于此
return [
'furiouspunches' => ' furiously punches ',
'kick' => ' kicks $loser in the junk ',
有没有办法让我访问那个 $loser 变量?我正在使用这些常量为我正在构建的应用程序返回字符串,所以我最终将这个返回值连接起来,最终输出类似于
$winner . config('gameconstants.kick') . $loser
但字符串并不总是与这种方式配合得很好,所以我想访问该变量,以便返回该字符串的不同变体。
我试过了
config('gameconstants.kick.$loser') 但这不起作用。有什么想法吗?
提前致谢。
【问题讨论】:
【参考方案1】:你会想要使用字符串替换,例如
return [
'furiouspunches' => ' furiously punches ',
'kick' => ' kicks loser in the junk ',
然后
$string = $winner . str_replace('loser', $loser, config('gameconstants.kick'))
【讨论】:
【参考方案2】:您可以使用翻译文件而不是配置文件。翻译文件也支持参数替换。
在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]);
【讨论】:
感谢您的回复,我其实很喜欢使用翻译文件的想法。这似乎是我将重写我的应用程序以利用的东西。每天学习新东西:)以上是关于laravel 8 - 我可以在我的配置中访问常量内的变量吗的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 8 的 Request 类中访问模型实例?