Laravel 5.1:从字符串调用函数

时间:2016-01-14 12:05:14

标签: php laravel laravel-5 laravel-5.1

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

这是函数,稍后我会调用:

<?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显示错误: 未找到类'选项\ FacebookOptionValidation'

但是当我这样调用我的函数时,一切正常:

use App\Validation\Options;

class ProfileUserEditController extends Controller {

    public function updateUserOption()
    {
        Options\FacebookOptionValidation::validate();
    }
}

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

这是一个'laravel-thing'吗?

2 个答案:

答案 0 :(得分:3)

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

    class ProfileUserEditController extends Controller {

        public function updateUserOption()
        {
            $class = 'App\Validation\Options\FacebookOptionValidation';

            $class::validate();


         }
}

答案 1 :(得分:1)

使用PHP7,你甚至可以这样做:

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

一行代码而不使用字符串