Extra Form
PHP PHP 7.2
CMS Rhymix 2.x

https://xetown.com/tips/1373435

 

function triggerBeforeInsertDocument($args)

        {

            // Trigger Code...

            return $args;

        }

 

 

실행되어야 할코드 뒤에

return $args;

 

이게 필요한 이유가 궁금합니다.

  • profile
    모듈에서 트리거가 콜 되는 부분을 보면, 트리거 내부에서 조작이 된 args들을 다시 원래 모듈로 돌려주기 위해
    return $args 명령이 존재하는것 같습니다 (맞나요? ㅠㅠ)
  • profile

    트리거의 반환값이 중요한 경우는 오류를 뿜기 위해 BaseObject(-1, 에러메시지)를 반환할 때뿐입니다. 그 밖의 반환값은 모두 무시됩니다. 메모리 낭비 그 이상도 이하도 아닙니다.

     

    moduleObject.proc 같은 곳에서는 BaseObject를 상속받은 ModuleObject가 넘어오기 때문에, 받았던 변수에 에러메시지를 추가하여 다시 반환할 경우 BaseObject로 인식할 수도 있습니다. 그러나 그냥 BaseObject를 만들어서 반환하면 될 것을 굳이 그렇게 복잡하게 할 필요도 없고, 아무튼 이런 특수한 경우를 제외하면 트리거의 반환값은 완전 무쓸모입니다. (심지어 대부분의 after 시점에서는 트리거가 에러를 반환하더라도 무시하고 계속 진행합니다. 트리거의 반환값을 코어에서 얼마나 철저하게 투명인간 취급하는지 알 수 있겠죠?)

     

    트리거에서 $args를 조작하여 글 내용을 변경하는 등의 작업을 할 수 있겠지만, 이 때도 $args를 반환할 필요는 없습니다. 모든 오브젝트는 참조로 넘어오기 때문에 그냥 $args를 조작하기만 하면 원본에 반영됩니다. $args를 반환하는 코드를 제거하더라도 똑같이 작동할 것입니다.

  • profile profile
    어렵지만 일단 없어도 된다로 이해가되는 군요. 감사합니다.
  • profile
    좋은 정보 감사합니다.