我有一个类似的调度程序
$schedule->command('foo')
->weekdays()
->hourly()
->timezone('America/Chicago')
->between('8:00', '17:00');
我想在('8:00','17:00'); 之间存储->,以便随时进行更改。稍后,例如,我可以使用-> at('02:00')(仅作为示例)。
我知道,有了PHP7,我们可以比使用
更好地使用变量函数。http://php.net/manual/en/functions.variable-functions.php
<?php
function sound_dog()() { return 'woof'; }
function sound_cow()() { return 'moo'; }
$animal = 'cow';
print ('sound_' . $animal)();
但是,当我想在(“所有内容”)中使用默认输入时,它将无法正常工作。所有示例均假定没有默认输入。
我如何制作一个内部具有输入的变量函数?
答案 0 :(得分:0)
如果我正确理解了您,那么您的问题包括两部分:
如何通过PHP
变量函数使用默认参数值
如何为Laravel
调度程序设置制定灵活的方案
和
关于您的第一个问题-这是变量函数的默认参数值的示例:
function sound_cow(string $sound = 'moo') { return $sound; }
$animal = 'cow';
print ('sound_' . $animal)();
print ('sound_' . $animal)('moowoof');
关于第二个问题-我认为存储代码块并从中生成脚本根本不是个好主意。乍一看,这似乎是个聪明的把戏,但是随着程序的扩大,此功能很快变得复杂而脆弱。它很容易受到攻击,因为它可能提供启动注入到数据库中的恶意代码的机会。例如,要为另一个PHP
框架重写(甚至将其移植到另一种编程语言)时,也很难进行重构,因为这取决于特定的调度程序实现。
如果您需要如此灵活的调度程序恕我直言,最好在Laravel
调度程序之上使用所需功能实现自己的可配置抽象层。
P.S。顺便说一句,您的代码示例有一个错误-函数定义中的多余括号。