В настоящее время я пытаюсь вызвать функцию из строки.
Это функция, которую я позвоню позже:
<?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 показывает ошибку: Class 'Options \ FacebookOptionValidation' не найден
Но когда я называю свою функцию так, все работает нормально:
use App\Validation\Options; class ProfileUserEditController extends Controller { public function updateUserOption() { Options\FacebookOptionValidation::validate(); } }
Как упоминалось здесь , можно вызвать класс / функцию из строки. Но в моем случае это невозможно – ни в статическом, ни в нестационарном варианте.
Разве это «laravel-thing»?
Попробуйте позвонить с полным пространством имен
class ProfileUserEditController extends Controller { public function updateUserOption() { $class = 'App\Validation\Options\FacebookOptionValidation'; $class::validate(); } }
С PHP7 вы даже можете это сделать:
(App\Validation\Options\FacebookOptionValidation::class)::validate();
Одна строка кода и без использования строки