2015-11-15 2 views
0

У меня проблема с моим кодом ниже. Ошибка, которую я получаю:Проблема с пространством имен. Использование метода из неправильного объекта

Catchable fatal error: Argument 1 passed to Closure::QuizApp\Routes{closure}() must be an instance of QuizApp\Routes\ServerRequestInterface, instance of Slim\Http\Request given in /var/www/QuizApp/Routes/AuthRoutes.php on line 8

Это потому, что я объявляю пространство имен наверху? Я могу решить это, используя псевдоним, но мне любопытно, почему это происходит в первую очередь.

<?php 

namespace QuizApp\Routes; 

use \Psr\Http\Message\ServiceRequestInterface; 
use \Psr\Http\Message\ResponseInterface; 

$app->get('/login', function(ServerRequestInterface $req, ResponseInterface $resp) use ($config) { 

    $callback = $config['site']['domain'] . $this->router->pathFor('fb_callback'); 
    return $this->FBAuthServices->redirect_to_auth_page($config['facebook']['permission'], 
                 $callback); 

}); 

Редактировать Посмотрев на моем собственном коде, я понимаю, что даже не нужно пространство имен. Класс, который был в этом файле, теперь удален. По-прежнему мне понравился бы ответ, мне любопытно.

ответ

1

Сравните эти

must be an instance of QuizApp\Routes\ServerRequestInterface

use \Psr\Http\Message\ServiceRequestInterface;

Это опечатка, он должен быть назван ServerRequestInterface в use.

+0

Мое слово. Теперь я чувствую себя правым пратом. Спасибо Свену. Когда я использовал псевдоним, я скопировал его из другого файла, который был открыт, затем ': u', чтобы отменить, следовательно, почему это сработало, а затем я удалился. ха-ха./Facepalm – BugHunterUK

Смежные вопросы