У меня странная проблема при вызове call_user_func. Имя класса, который я передаю, почему-то заменяет его имя случайной строкой. Самое смешное, что все это прекрасно работает в моем локальном развертывании, а затем ломается, когда я перемещаю его вживую (и локальный, и живой работают под управлением PHP5.3)
call_user_func () пытается вызвать функцию из другого класса контроллера и возвращает ошибку, когда имя класса заменяется случайной строкой.
ОБНОВЛЕНО
Звонок выглядит так:
class ApiController extends Controller
{
public function actionView()
{
$this->resource_class = 'site\frontend\controllers\api\v1'.'\\'.ucfirst($_GET['resource']).'Controller';
if(class_exists($this->resource_class))
call_user_func(array($this->resource_class, 'view'), $_GET);
}
}
На этом этапе $ this-> resource_class равен:
site\frontend\controllers\api\v1\OffersController
Целевой класс (site / frontend / controllers / api / v1 / OffersController.php) выглядит следующим образом:
namespace site\frontend\controllers\api\v1;
class OffersController extends \ApiController
{
public function view($params)
{
// code...
}
}
и я получаю ошибку:
include(/home/username/public_html/site/frontend/controllers/api/v1/evm9pfgpg9u0k9pk.php): failed to open stream: No such file or directory
По какой-то странной причине OffersController скремблируется в evm9pfgpg9u0k9pk
Класс OffersController существует в пространстве имен site \ frontend \ controllers \ api \ v1, и в нем доступен метод public view (). Как я уже упоминал, он работает на моем локальном развертывании.
Кто-нибудь видел это раньше и имел представление о том, что может быть причиной?
Спасибо за вашу помощь! :)
Кто-нибудь имел это раньше?