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


( 조건 )  ---------------------------------------------------

  • 코드에서 처리해야 할 중복 적인 처리 로직이 많다. ( 예 : 정산, 세금 ) 
  • 업무 내용이 큰 사이트
  • 코드에서 처리할때 DB 에 정의한 내용을 가지고 오거나 파일에 설정한 용량이 큰 파일의 내용을 가지고 와서 같이 처리하는 로직이 있다.
  • 각 업무 내용별로 처리하는 로직을 Model 에 넣기에는 너무 크고 다른 Model 과 겹치는 경우가 많다.



( 질문 )  ---------------------------------------------------

  • 사이트에서 접근하는 처리외에 중복되는 처리 로직 부분에 대한
  • Controller 와 Model 을 어떻게 만드는게 좋을지요?
  • 만든다면 디렉토리 위치와 구조는 어떻게 잡은게 좋을지요?


    CommentAdd your comment...

    1 answer

    1.  
      2
      1
      0

      중복로직이 많거나 로직은 같은데 파라매터만 다른 경우 약 네가지의 처리방법이 존재합니다.

      1. 헬퍼함수로 정의한다. https://zetawiki.com/wiki/Laravel_%EC%BB%A4%EC%8A%A4%ED%85%80_%ED%97%AC%ED%8D%BC_%ED%95%A8%EC%88%98_%EC%B6%94%EA%B0%80
      2. 프라이빗 패키지로 정의한다. https://medium.com/pvtl/local-composer-package-development-47ac5c0e5bb4
      3. 클래스를 만들어 의존성을 주입시킨다. https://laravel.kr/docs/5.7/container
      4. 정적 메서드를 포함한 클래스를 정의한다.


      다른 방법은 사이트를 링크해 두었습니다. 4번의 경우는 제가 개인적으로 사용하는 벙법인데, app 디렉토리 아래에 Classes 라는 디렉토리를 만들고 클래스를 정의 한 뒤 정적메서드를 정의하여 호출하는 방법입니다.


      app/Classes/MyClass.php
      <?php
      
      namespace App\Classes
      
      class MyClass
      {
      	public static function foo()
      	{
      		// ...
      	}
      }


      이후에 아래의 명령으로 컴포저를 덤프하고 모델 또는 컨트롤러에서 호출하세요.


      composer dump-autoload



      1. Bengi

        귀중한 시간을 할애해서, 자세히 답변 주셔서 감사합니다.


        4번의 경우

        인사, 재고, 주문, Bom, 스케쥴, 판매, 영업, 정산, 세금 등등을  처리하는 로직이 있다고 할때

        • Class 들을 특정 디렉토리 아래에 두고, 구분 별로 아래에 디렉토리를 만드는게 좋을지..
        • 각 Class 의 공통 부분을 의존성으로 처리하게 만들어 구분별로 만들어둔곳에서 사용하는게 좋을지..


        유지보수가 용이하고, 확장성이 좋으며, 효율이 좋은 구조를 찾고 있는데

        큰 Layout 구조를 찾아 봤지만, 서핑 능력이 부족해서요.

      2. 정만수

        에구 답변이 늦어서 죄송합니다.


        언급하신 두 개를 적절히 섞어서 사용하세요.

        Class 들을 특정 디렉토리 아래에 두고, 구분 별로 아래에 디렉토리를 만드는게 좋을지

        디렉토리를 구분하여 만드시고

        각 Class 의 공통 부분을 의존성으로 처리하게 만들어 구분별로 만들어둔곳에서 사용하는게 좋을지

        공통부분은 의존성도 좋지만 그렇게 되면 라라벨에 너무 의존합니다. PHP 언어 자체에서 제공하는 트레이트를 사용하거나 상속또는 인터페이스를 사용하여 디자인패턴을 구현하세요. 뭐 물론 컨트롤러 단에서 공통으로 사용하는 객체(싱글톤을 의미하는 것은 아닒)가 있다면 의존성도 나쁘지 않습니다. 프로그래밍에 정답은 없으니까요.

      3. Bengi

        정만수님 ... 감사합니다...😄😄😄


        제가 알고 싶은 부분이

        말씀하신 부분이였거든요...👍

      CommentAdd your comment...