모듈의 존재여부를 확인하는 코드
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.2 |
한 모듈에서 다른 모듈의 설치 여부를 알 수 있는 코드가 있을까요?
다른 모듈과 연계를 하기 위해서 코드를 짜는 중인데, test 모듈이 없을때 getModel('test')->test() 이런식으로 호출하면 당연히도(?) 오류가 나더군요
if(getModel('test') == NULL) 로도 시도해 봤지만 제 의도대로 작동하지 않더군요;
어떤식으로 해야 모듈의 설치 여부를 알 수 있을까요?

리버스
Lv. 7
모듈만드는 대학생입니다.
https://potatosoft.kr
https://potatosoft.kr
댓글 7
if(getModel('test') == NULL) 이것으로 될 텐데요?
getModel('document') → 오브젝트 반환
getModel('comment') → 오브젝트 반환
getModel('jgsdvfsiyhfhf') → NULL 반환
물론 addon 모듈처럼 Model 클래스를 정의하지 않는 경우도 있으니
getModel보다는 getClass로 체크하는 것이 더 확실하지만,
실제로 사용하실 것이 Model 클래스라면 그걸 직접 확인한다고 문제가 되지는 않습니다.
if(getClass('test') === NULL) {
// 모듈 설치 안되어 있음
}
라이믹스나 비교적 최근 버전의 XE라면 클래스 오토로딩이 적용되어 있으니
그냥 if(class_exists('TestModel')) 로 체크하는 방법도 있고요.
그럼 다른 코드에서 오류가 떴던 것 같습니다;;
만약 getModel 함수에 리턴값이 NULL 일 경우에는, 해당 클래스가 없다는 것으로 받아들이면 된다는것이죠?
감사합니다!!
그런데 다른 모듈에서 호출하려면 ../name/name.class.php같이 써줘야 할거 같은데 뭔가 호출 주체에 따라 예외사항이 많을거 같아서 좀 고려할게 많아 보이네요;
_XE_PATH_ . 'modules/name/name.class.php'
라이믹스 전용이라면 _XE_PATH_를 RX_BASEDIR로 대체해도 무방합니다.
애초에 따로 경로 고려를 해 주어야 하나요..?
어차피 실행 경로는 index.php 파일이 있는 위치이니, ./modules/name/name.class.php 로 사용하면 되는게 아닌지요..?
아니면 큰일인데요...ㅠ