질문을 삭제하지 말아주세요.!
 
1
0
-1

24장을보면 (238P) SocialController::redirectToProvider() 이 가능한것 같은데요, 어떻게 위의 함수가 facade형태로 호출이 가능한건가요? 설정은 분명 'Socialite'=>Laravel\Socialite\Facades\Socialite::class 이것과 Laravel\Socialite\SocialiteServiceProvider::class, 이렇게만 해주었는데요..

아참 그리고 컨트롤러에 보면 return \Socialite::dirver($provider)→redirect(); 이코드가 있는데  여기 Socailite앞에는 왜 / 를 붙인건가요???? \를 언제붙이고 언제 안붙이는지 궁금합니다!


또 243p에서 /social/github 접속하면 

FatalErrorException in AbstractProvider.php line 143:Call to undefined method Illuminate\Session\Store::set() 이런 에러가 떠서 찾아봤더니 laravel버전에 맞춰서 소셜라이트가 3.0.0으로 업데이트되서 메서드가 set() 이아니라 put()이라고 하더라구요... 그래서 저는 composer로 소셜라이트 버전을업데이트했습니다만 서버를 시작하려고하니 

$ php artisan serve
PHP Warning: require(C:\Users\SAMSUNG\myapp2\vendor\composer/../laravel/framework/src/Illuminate/Foundation/helpers.php
): failed to open stream: Permission denied in C:\Users\SAMSUNG\myapp2\vendor\composer\autoload_real.php on line 66
PHP Fatal error: require(): Failed opening required 'C:\Users\SAMSUNG\myapp2\vendor\composer/../laravel/framework/src/I
lluminate/Foundation/helpers.php' (include_path='.;C:/Bitnami/wampstack-5.6.30-1/php/PEAR') in C:\Users\SAMSUNG\myapp2\v
endor\composer\autoload_real.php on line 66

이런 에러가 뜹니다...어떻게 해야하나요ㅠㅠ

    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      의존성 관리와 관련해서 정광섭님의 아티클을 읽어 보실 것을 권장합니다.

      https://www.lesstif.com/pages/viewpage.action?pageId=24445250

        CommentAdd your comment...
      1.  
        1
        0
        -1

        여러가지 질문이 섞여 있네요. 하나씩 답변 드립니다.


        1) SocialController::redirectToProvider() 는 불가능합니다. 파사드도 아닙니다. PHP 커뮤니티에서 클래스에 있는 메서드를 표현할 때 저런식으로 표기하기로 약속했기 때문에 저런 표현법을 쓴 것입니다. 아래 PDO 클래스의 메서드 표기법을 참고해 보세요.

        http://php.net/manual/en/book.pdo.php


        2) Socialite 앞에 붙인 역슬래시(\)는 루트 네임스페이스입니다. Socialite를 사용하는 SocialController는 App\Http\Controllers 네임스페이스에 있으므로, 저 역슬래시가 없으면 App\Http\Controllers\Socialite 클래스를 참조하게 되고, 저 네임스페이스에는 Socialite 가 없습니다. 따라서 루트 네임스페이스에 있는 Socialite 파사드를 참조하기 위해 역슬래시를 붙이는 것입니다. 클래스 선언 위에 use Socialte; 를 쓰면(다른 언어의 import 구문과 같습니다.) 클래스 바디 안에서 역슬래시 없이 Socialite 파사드를 쓸 수 있습니다.


        3) composer require "laravel/socialite:2.0.*" 로 버전을 지정해서 패키지를 설치해야 합니다. 유의적 버전을 지키지 않는 패키지들이 있으므로, composer update 명령은 항상 조심해야 하고, 격리된 브랜치에서 업데이트한 후 문제점이 없는 것을 충분히 확인한 후 master 브랜치에 머지해야 합니다. "유의적 버전(SemVer)과 의존성 관리, 의존성 지옥"이란 주제를 찾아보시면 좋겠습니다. 


        우선 현재 문제는 다음과 같이 해 보시기 바랍니다.


        a) composer.json 을 열고 laravel/socialite 라인을 찾아서 삭제합니다. config/app.php에 등록한 소셜라이트 서비스프로바이더와 파사드 라인을 삭제합니다.

        b) composer.lock 파일과 vendor 디렉터리 전체를 지웁니다.

        c) composer install 명령을 수행합니다.

        d) composer require "laravel/socialite:2.0.*" 명령으로 소셜라이트 패키지를 설치합니다. config/app.php를 열어서 서비스 프로바이더와 파사드를 다시 등록해 줍니다.

          CommentAdd your comment...