Vladislav Asked:2022-07-01 23:39:38 +0000 UTC2022-07-01 23:39:38 +0000 UTC 2022-07-01 23:39:38 +0000 UTC 如果放在字符串中,是否会在 laravel 中调用方法? 772 也许这很糟糕,但让我们看看你说什么以及解决方案是什么。 我正在为通知编写通用作业。有一个动作字段“动作”,我需要,取决于传递给实例的内容(哪个方法),然后用它代替方法。 当然,我会在其中放置一个变量而不是字符串,但它并没有太大变化,因为我会为变量分配一个字符串,例如“follow”、“entity”等。(注意截图) 如果这真的很糟糕并且不起作用,那么请告诉我该怎么做? php 1 个回答 Voted Best Answer Вадим Александру 2022-07-02T00:45:53Z2022-07-02T00:45:53Z 我不确定我是否理解正确。它将是,如果我们传递完整的namespace类和方法的名称,例如,我们有一个类 class MyClass { public static $myVar = 'classVar'; public static function foo() { echo 'foo method'; } public static function bar() { echo 'bar method'; } } 初始化$action $method1 = 'foo'; $method2 = 'bar'; $action = [ 'type' => MyClass::class . "::{$method1}", 'entity' => MyClass::class . "::{$method2}", ]; 我们调用$action前面指定的方法 call_user_func($action['type']); // echo foo method call_user_func($action['entity']); // echo bar method 如果需要将参数传递给这些方法,那么我们使用call_user_func_array(),例如 call_user_func_array($action['entity'], [$a,$b,$c]); 您可以在此处阅读有关这些方法的更多信息call_user_func(),call_user_func_array() UPD 变量的情况下,稍微复杂一些,可以通过反射获取值 $myVarName = 'myVar'; $reflect = new ReflectionClass(MyClass::class); echo $reflect->getStaticPropertyValue($myVarName); // echo classVar
我不确定我是否理解正确。它将是,如果我们传递完整的
namespace类和方法的名称,例如,我们有一个类初始化
$action我们调用
$action前面指定的方法如果需要将参数传递给这些方法,那么我们使用
call_user_func_array(),例如您可以在此处阅读有关这些方法的更多信息call_user_func(),call_user_func_array()
UPD 变量的情况下,稍微复杂一些,可以通过反射获取值