目前我正在尝试从字符串中调用函数。
这是函数,稍后我会调用:
<?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'吗?
答案 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();
一行代码而不使用字符串