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

라라벨(5.4)에서...

컴포저로 설치된 밴더 클래스가 여러가지 있는데,

밴더 소스를 건드리지 않고 클래스에 있는 함수를 오버라이딩 하려면 어떻게 해야 할까요?


    CommentAdd your comment...

    2 answers

    1.  
      3
      2
      1

      벤더 클래스를 상속받는 클래스를 만들어서 쓰면 되지 않을까요?


      예를들어 아래 같이 벤더 클래스가 있으면

      <?php
      namespace Vendor\Package
      
      
      class Sample 
      {
      	function willBeOverrided()
          {
               //원래 기능
          }
      }


      아래 처럼 상속받아서 메소드를 재정의하면 될 것 같아요.

      namespace MyApp
      
      
      class Sample extends Vendor\Package\Sample
      {
          function willBeOverrided()
          {
              // 재정의한 기능
          }
      }
        CommentAdd your comment...
      1.  
        1
        0
        -1

        이현석님의 조언 감사드립니다.

        해주신대로 해보았는데,

        제 경우에는,

        수정하려는 게 라라벨 페키지라 파세드를 쓰다보니 하나의 함수를 오버라이드 하는 것만으로 활용이 어렵네요;;

        게다가 오버라이드 하려는 함수가 조회하는 함수들이 private 이라서 extends 해서 해결이 어렵네요...

        그냥... 클래스를 통째로 MyApp 네임스페이스 안에 별로의 ServiceProvider 를 만들어서 등록하고 별도의 디렉토리에다 클래스를 통째로 복사해왔습니다^^;

        config/app.php 에서 

        aliases, providers 에 기존의 클래스를 새로운 클래스 값으로 바꾸니 파사드도 잘 작동하고...

        복잡하지 않은 패키지라 다행이지만 복잡하면 될 수 있는 방식은 아니네요;;

        1. 이현석

          단순한 상황이 아니었군요! ㅎㅎ

        CommentAdd your comment...