01. Warning: Creating default object from empty value
addons/member_icon_print/member_icon_print.lib.php:20
addons/member_icon_print/member_icon_print.addon.php:17
files/cache/addons/pc.php:111
classes/display/DisplayHandler.class.php:87
classes/module/ModuleHandler.class.php:1163
index.php:52

디버그 내용에 출력되는 에러 내용 입니다.

 

<?php
    /**
     * @brief div 또는 span에 member_번호 가 있을때 해당 회원 번호에 맞는 대표아이콘으로 대체
     **/
    function IconshopMemberIconPrint($matches) {
        if(strpos($matches[0],'icon_print="no"')!==false)  return $matches[0];

        // 회원번호를 추출하여 0보다 찾으면 본문중 text만 return
        $member_srl = $matches[3];

        // 회원이 아닐경우(member_srl = 0) 본문 전체를 return
        if($member_srl<0) return $matches[5];
        $nick_name = $matches[5];

        // 아이콘샵 모델을 구해옴
        $oIconshopModel = &getModel('iconshop');

        // 전역변수에 미리 설정한 데이터가 있다면 그걸 return 하고, 없으면 구해옴
        if(!$GLOBALS['_iconshopMember'][$member_srl]->cached) {
            $GLOBALS['_iconshopMember'][$member_srl]->cached = true;

            // 회원의 대표아이콘 구해옴
            $icon_data = $oIconshopModel->getMemberIconBySelected($member_srl);
            if($icon_data && file_exists($icon_data->file1)) $GLOBALS['_iconshopMember'][$member_srl]->icon = $icon_data;
            else $icon_data = '';
        } else {
            $icon_data = $GLOBALS['_iconshopMember'][$member_srl]->icon;
        }

 

    // 1. 출력문서중에서 <div class="member_번호">content</div>를 찾아 MemberController::transImageName() 를 이용하여 이미지이름/마크로 변경
    $output = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', 'IconshopMemberIconPrint', $output);

 

 

디버그 내용에 따라 파일을 열어보니 이쪽부분에 문제가 있는거 같은데

new stdClass()를 줘야하는 변수를 찾지를 못하겠습니다 ㅡ;;

염치 없지만 고수님들의 도움을 좀 받고싶습니다 ㅠ

  • profile
    저는 코드를 이해하지 못하고 패턴을 보고 시도하는거라 해보고 에러가 사라지지 않거나 혹은 동작에 오류가 생기면 원복을 하는 방법으로 했습니다. 이 자료는 제가 안쓰기로 해서 폐기한거라 해보지 않은 자료네요.

    저라면
    $GLOBALS['_iconshopMember'][$member_srl]->cached = true;

    위와 같은 패턴은 기존과 동일하게

    $GLOBALS['_iconshopMember'][$member_srl] = new stdClass(); 라고 윗줄에 넣어보고 결과를 본다음 결과에 따라 대응해 볼 것 같습니다.
  • profile profile
    지기님께서 알려주신 방법대로 if문 위에 $GLOBALS['_iconshopMember'][$member_srl] = new stdClass(); 코드를 삽입하니 디버그에서 에러가 사라졌네요 ^^;;;;

    웹지기님께선 저가 생각하는 웹마스터에 교과서 같습니다.

    더불어 아이콘출력 애드온을 사용하지 않으신다면 아이콘샵 모듈도 이용하지 않으시게 되는건가요?
  • profile profile

    네. 모듈 자체가 유지보수도 안되고 사용에도 애로가 많아 오래전부터 사이트에서 아이콘샵 제공하지 않고 있었습니다.

    이번에 삭제했습니다.

  • profile profile
    개인적인 생각은 if 문 아래에 넣는게 맞아 보입니다.
    $GLOBALS['_iconshopMember'][$member_srl]->cached = true; 코드 자체가 if 조건에 맞을때 읽혀지거든요.
  • profile profile
    아하! 감사합니다.