Laravel 5.1:从字符串调用函数


Laravel 5.1: Calling a function from string

当前我正在尝试从字符串中调用函数。

这是我稍后调用的函数:

<?php
namespace App'Validation'Options;
class FacebookOptionValidation
{
    static public function validate()
    {
       echo: 'example';
       die();
    }
}

这是我的控制器:

<?php
namespace App'Http'Controllers'Profile;
use App'Validation'Options;
class ProfileUserEditController extends Controller {
    public function updateUserOption()
    {
        $class = 'Options'FacebookOptionValidation';
        $class::validate();
    }
}

在这种情况下,Laravel显示了一个错误:未找到类"Options''FacebookOptionValidation"

但当我这样调用我的函数时,一切都很好:

use App'Validation'Options;
class ProfileUserEditController extends Controller {
    public function updateUserOption()
    {
        Options'FacebookOptionValidation::validate();
    }
}

如前所述,可以从字符串中调用类/函数。但在我的情况下,这是不可能的——无论是静态变体还是非静态变体。

这是"拉拉韦的事"吗?

尝试使用完整命名空间进行调用

    class ProfileUserEditController extends Controller {
        public function updateUserOption()
        {
            $class = 'App'Validation'Options'FacebookOptionValidation';
            $class::validate();

         }
}

使用PHP7,您甚至可以做到这一点:

(App'Validation'Options'FacebookOptionValidation::class)::validate();

一行代码,不使用字符串