최근 php의 객체에 대해서 초입 부분을 공부하다가 한가지 궁금한게 XE,라이믹스에서
$args = new stdClass();
와 같이 인스턴스를 생성하는 코드가 자주 등장했다는 것이 생각이 났습니다.
최근 php에서는 이것이 없이 객체화? 된 코드 진행이 되면 에러를 발생시킨다? 대충 이런 이유로 누락된 곳에
$args = new stdClass(); 를 모두 시작점에 추가해 주는 패치를 해야 했던 것이 기억납니다. 에러가 뜨니까 뜨는 근처 찾아서 저 코드를 열심히 넣었던 것이 대충 객체와 관련이 있는 것 같다는 생각이 들었네요.
특별히 stdClass 클래스? 명을 가진 코드(오브젝트?)가 보이지 않아 구글에 검색을 해보니
빈 Class 라고 하는 글들이 검색되어지는 것 같습니다.
$args->module_srl = $module_srl;
executeQuery("document.deleteAlias", $args);
위와 같이 $args->module_srl 객체화?? 형식을 쓰기 위해서
$args = new stdClass(); 이렇게 더미??? 인스턴스를 생성해주는 건가요???
$args = new stdClass(); 를 먼저 생성해주지 않아도 문제가 없었던 것 같은데 이게 꼭 있어야 하는 이유가....
stdClass 는 빈 클래스를 뜻합니다.
저희가 클래스를 호출할때 보통
$oModuleModel = getModel('module');
이렇게 쓰지만 원래는
$oModuleModel = new moduleModel();
이렇게 호출하는게 PHP에서는 정석이거든요
이 부분 자세한 부분은 나중에 알려달라 하시면 드리도록 하고, stdClass 는 저런 클래스가 없는 빈 클래스를 뜻합니다.
보통 오브젝트가 필요할 경우 빈 오브젝트를 생성할때 쓰이죠. $args = new stdClass() 는 $args 에 빈오브젝트를 선언한다 하고..
$args->module = '';
이렇게 오브젝트안에 내용을 추가하는 방식이죠.
즉 말씀하신대로 더미 객체를 선언하는 것으로 생각하시면 됩니다.
PHP 5.4 이후로 변수가 오브젝트를 가지지 않는 경우부터 워닝에러를 띄어와서 해당 오브젝트를 만드는 경우라면 이제는 빈 오브젝트를 생성하는게 정석으로 바뀌었다고 생각하시면 됩니다.
실제로, C# 같은 다른곳에서는 일반적으로 클래스를 호출하여 오브젝트 값을 추가하는 방향으로 많이 사용됩니다. (거기에서는 빈 오브젝트 선언이라는 항목이 없는것으로 알고 있습니다. 오브젝트를 가져오고 싶으면 해당 부분에 따라 레퍼런스(반환클래스)를 만들어야 합니다.
PHP도 마찬가지로 오브젝트용 클래스를 만들어서 쓰고요 (ex document.item.php 파일의 documentItem()이 반환 클래스가 됩니다. )