Confluence 에 심각한 보안 취약점이 발견되었으니 사용자분들은 업그레이드 하세요.!
 
1
0
-1

컨트롤러 단에서 함수 안에 Snoopy.class.php 파일을 include하고

$snoopy를 새로 선언해주면 

Class 'App\snoopy\Snoopy' not found 라는 에러 메시지가 표출이 됩니다.


public function testfunction(){

    include app_path()."/snoopy/Snoopy.class.php";

    $snoopy = new Snoopy;

}

이렇게 함수를 짤 경우에 어떻게 해야 Snoopy 클래스를 이용할 수 있을가요?


다른 분들의 도움 부탁드립니다.

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      Snoopy.class.php 파일을 의존성 주입 (DI)으로 불러오면 될것 같습니다.

      저같은 경우엔 Snoopy 파일을 Controllers 에 넣은 상태로 진행 했습니다.

      snoopy
          protected $snoopyClass;
          public function __construct(Snoopy $snoopyClass) {
              $this->snoopyClass = $snoopyClass;
          }
          public function snoopy() {
              dd($this->snoopyClass);
          }
      


      1. akaHawk

        Snoopy파일을 Controller에 넣으신 건,


        컨트롤러로 따로 구현하셨단 건가요?

      2. 김민근

        네 저는 따로 구현했습니다.

        akaHawk님께서 질문주신 방법대로 구현 하시려면 Snoopy.class.php 파일에 네임스페이스를 선언 해주셔야 합니다.



        Snoopy.class.php
        use App\snoopy\Snoopy;
        
        
        class Snoopy {
        	...
        }



      3. akaHawk

        그러면 저렇게 스샷처럼 SnoopyController로 구현하려면


            protected $snoopyClass;
            public function __construct(Snoopy $snoopyClass) {
                $this->snoopyClass = $snoopyClass;
            }
            public function snoopy() {
                dd($this->snoopyClass);
            }

        이 부분이 SnoopyController쪽에 구현되어야 하는 건가요?

      4. 김민근

        저는 Snoopy.class.php 파일을 SnoopyController 로 보기 편하게 변경한것입니다.

        Snoopy 클래스가 아닌 곳에 구현이 되어야 합니다.

      5. akaHawk

        네임스페이스 선언해줘도 에러는 많이 나서 아무래도 컨트롤러 따로 구현하는 게 나아보이긴 하네요

      CommentAdd your comment...