라이믹스 가이드를 작성하면서 디버그바 모듈도 만들고 이슈나 변경사항, 라이믹스 매뉴얼, 코드 등을 뜯어보면서

라이믹스 2 버전 어딘가에서 추가된 네임스페이스 기반의 모듈의 틀을 구성하고, github의 템플릿 저장소 기능을 이용해 쉽게 복제할 수 있도록 구성해봤습니다.

 

https://github.com/rhymix-guide/rhymix-module

 

라이믹스의 코딩 컨벤션과 다르고, 최소 지원 버전인 7.2보다 높은 권장버전인 7.4에 맞춰져있고, 라이믹스 최신 버전에서 동작합니다.

코딩 컨벤션이 다른 문제는 아쉽지만 적응이 어려워서 PSR-12로 적용했네요. 서드파티일 뿐이니까요.

 

admin 모듈이나 따로 배포된 indexnow 모듈을 보면 Controllers, Models 폴더를 모듈 폴더의 루트에 두지만, 이 외에 다른 구성이 추가되다보면 conf, views, schemas 등의 폴더와 뒤섞여서 보통 많이 사용하는 src 폴더에 몰아 넣었습니다. 

 

신경을 많이 쓰기는 했는데 예제 코드를 조금 더 보완하고 이 템플릿을 이용할 때 필요한 내용도 보완해야겠죠. 

 

 

 

그누보드 가이드 작성할 때도 코드와 이슈, 커밋 뜯어보면서 작성했는데 그래도 그누보드보다 라이믹스가 커밋로그나 이슈 관리가 잘 되어있어서 보기 좋네요.

그누보드는 너무 힘들었어요 😭

코드 뜯어보면 버그가 튀어나오고 보안취약점이 튀어나오고 이해할 수 없는 코드는 커밋이력 추적도 끊기고 😭😭

의도를 이해해하려고 2, 3일 고민해야만 했던 코드도 있었네요 😭😭😭

 

 

그리고 하나더 

어썸! 라이믹스

https://github.com/rhymix-guide/awesome-rhymix

  • profile

    오.. 이건 뭐죠? 앞으로 모듈이 이렇게 바뀌나요?

  • profile profile

    https://xetown.com/download/1781819
    기진곰님의 모듈을 보고 따라 만들어 본거예요.

  • profile

    와~~ 모듈 배포하니까 금메달 주네요 ☺️

  • profile

    모듈 내의 폴더 구조는 어떻게 만들든 자유이지만, Controllers Models 이렇게 대문자를 사용하면 라이믹스 코어에서 오토로딩이 되지 않습니다. 윈도우, 맥OS 등 대소문자를 구분하지 않는 플랫폼에서 개발하신다면 정상 작동한다고 착각할 수도 있는데, 리눅스 서버에 배포하는 순간 아주 큰 서프라이즈와 맞닥뜨릴 거예요.

  • profile profile

    대소문자를 구분하는 호스팅에 올려서 확인해보니 괜찮네요.
    아마도 src 폴더 밑으로는 오토로더를 따로 구성해서(PSR-4) 사용하고 있어서 괜찮은가 봅니다.

  • profile profile

    src/EventHandler.php나 src/Module.php를 먼저 불러온다면 PSR-4 오토로더가 인클루드되겠지만, 이 파일들이 아직 로딩되지 않은 상태에서 하위 폴더에 있는 클래스를 참조하려고 하면 에러가 날 수 있습니다.

  • profile profile
    이벤트 핸들러를 제거하면 그렇긴 하겠네요.
  • profile profile

    오토로드 파일명은 대문자로 결정됐다는 내용의 이슈였는지 글을 얼핏본 것 같은데 못 찾겠네요. 이 대소문자 관련 논의한 내용을 참고할수있는 내용이 있으면 링크 부탁드립니다.

     

     

    ---

    추가

    찾았네요. 릴리즈 노트에서 있었네요.

    https://rhymix.org/news/356

    하위호환성 때문이군요.

    PSR-4 규칙에 맞춰 대소문자 일치를 확인하고, 없으면 소문자로 변환해서 찾도록 개선되면 좋겠네요.

  • profile profile

    파일명은 라이믹스 2.1부터 대소문자를 구분합니다. 하위호환성을 위해 소문자만 사용하는 것도 허용하지만, 권장하지는 않습니다. 예: EventHandler라는 클래스를 오토로딩할 때는 EventHandler.php를 먼저 찾아보고, 없으면 eventhandler.php를 찾아봅니다. eventHandLer.php는 인식하지 않습니다.

    폴더명은 소문자만 사용해야 합니다. XE 시절부터 사용해 온 addons, modules, widgets 등의 최상위 폴더명과 각 자료의 폴더명이 모두 소문자이고, 다양한 OS를 사용하는 유저들에게 이것을 대문자로 바꿀 것을 요구하면 대혼란이 발생할 것이 분명하기 때문입니다. 만약 폴더명에 대문자를 쓸 수 있도록 한다면 modules/모듈명/ 이후 부분에만 선택적으로 적용해야 할 텐데, 그것도 PSR-4를 제대로 따르는 것은 아니죠. 이래저래 제대로 지킬 수 있는 표준이 아니므로 그냥 무시하고 있습니다.

  • profile profile
    기본 룰은 건드리지 않고 `<namespaces>`에 등록한 것이나 `<namespace psr4="true">` 같은 옵션도 생각해볼만하네요.
    따로 이슈로 남겨보겠습니다.
  • profile
    좋아요, 좋아. 모듈 제작할 때 도움이 될지도?
  • profile
    감사합니다!
    모듈의 바뀐 파일 구조를 따라가기가 벅차서ㅜ 그냥 예전 방식처럼 만들어야겠다고 생각했는데 매우매우 요긴한 도움이 될 것 같습니다.
    그리고 어썸 라이믹스에 링크 프리뷰 모듈이 있어서 기분이 좋았어요ㅋㅋㅋ
  • profile profile

    공식적으로 권장하는 모듈 구조에 대한 가장 정확한 레퍼런스는 모듈 생성기입니다. 커뮤니티에서 다른 구조를 실험해 보시는 것은 환영하지만, 너무 전위적으로(?) 설계하면 예상치 못한 곳에서 오류가 일어날 수도 있으니 주의하세요. ㅎㅎ

  • profile profile
    확인했습니다.
    모듈생성기도 새로운 권장 구조로 바꿔서 생성을 해주는군요!
  • ?
    또 한분의 능력자분이 나타나셨네요. 라이믹스 활성화에 많은 도움이 될것 같네요. 응원합니다.