자유게시판

라이믹스 예제 모듈의 템플릿 저장소를 만들었습니다

2024.01.01 13:53
355
3

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

라이믹스 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

kkigomi Lv. 2

댓글 16

  • GG
    2024.01.01 14:02 #1801501

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

  • 2024.01.01 14:04 #1801505

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

  • 2024.01.01 14:14 #1801518

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

  • 2024.01.01 14:35 #1801532

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

  • 2024.01.01 14:59 #1801543

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

  • 2024.01.01 15:11 #1801564

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

  • 2024.01.01 15:16 #1801569
    이벤트 핸들러를 제거하면 그렇긴 하겠네요.
  • 2024.01.01 15:33 #1801573

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

     

     

    ---

    추가

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

    https://rhymix.org/news/356

    하위호환성 때문이군요.

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

  • 2024.01.01 16:17 #1801581

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

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

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

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

  • 2024.01.03 01:08 #1801851
    확인했습니다.
    모듈생성기도 새로운 권장 구조로 바꿔서 생성을 해주는군요!
  • 2024.01.01 23:09 #1801629
    또 한분의 능력자분이 나타나셨네요. 라이믹스 활성화에 많은 도움이 될것 같네요. 응원합니다.
  • 2025.02.25 02:39 #1860500
    제작하신 레이아웃이 많이 탐나네요 ㅎㅎㅎㅎㅎ 개발도 잘하시고 디자인 감각도 좋으신거 같아요 혹시 레이아웃도 따로 공유해주실 계획이 있으신가요?!