【问题标题】:Yii2 call PHP function in model dynamically from variableYii2从变量动态调用模型中的PHP函数
【发布时间】:2018-04-09 18:30:05
【问题描述】:

是否可以通过变量动态调用模型函数?

$model = $request['model'];
$action = $request['action'];

我有一些模型和几个功能。现在我想调用一个基于变量 $model 和 $action 的模型函数。在这种情况下,我需要根据请求动态调用模型函数。

【问题讨论】:

  • 你的意思是类中的静态函数??
  • 函数是上述类中的公共函数
  • 函数是不是静态的??

标签: function variables model yii2 call


【解决方案1】:

对于静态函数

假设你是一个班级,例如:

  \common\models\MyClass

有一个

  public static function mStatyFunction()
  {

    ....
  }

你可以使用类名作为 var

$myClass = '\common\models\MyClass';

$myClass::myStatFunction();

或者如果你还需要函数名作为 var 你可以

$myFunc = 'myStatFunction';

 $myClass::$myFunc();

对于非静态函数,您可以简单地创建一个新对象

public function myDinaFunction()
{
  ....
}

$myObject = new MyClass();

并调用函数

$myObject->myDinaFunction();

也可以

$var = 'myDinaFunction";

$myObject->$var();

【讨论】:

  • 感谢 scaisEdge 的快速支持!
  • 我不知道,除了这个答案之外,如何在这里与您联系。也许你也可以看看这个问题? stackoverflow.com/questions/49736998/…
  • @Perino 我看了一下,但很抱歉目前我没有 Bearer / REST 方面的经验..所以我想我无法帮助你..
  • 在静态函数 $myClass::myStatFunction() 的示例中,如何将 myStatFunction() 也用作变量?在非静态函数推荐中,我发现我还必须将命名空间包含到类变量中。如果我选择变体 $myObject->$var,我最终会遇到问题:未定义的属性:frontend\modules\rest\models\Member::$login ->其中 'login' 是 $var 的正确值。这意味着 $var 将被解析为它的值,但系统之前设置了一个 '$'?
  • 对于静态函数,var 答案中的函数已更新.. 用于测试我正在使用(php 5.6.31)和工作..(显然分配了适当的命名空间)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
相关资源
最近更新 更多