Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

4.png

 

에러 해결 조언좀 부탁드립니다.

 

그리고 혹시 계속 질문하기 좀 민망해서 .. 근본적인 해결법이 무엇인지도 에러코드의 해석도 궁금합니다. 

  • Lv4
    if(in_array($val->get('nick_name'), $blocked_list)) {
    이렇게 바꿔보라고 람보님이 댓글 달아주셨던거 같습니다.
  • Lv24
    그 단순히 11번째 한줄의 오류를 바라볼게 아니라.. 윗줄에 $docu_list 항목부터 봐야하는 사항입니다.

    $docu_list 에 Context::get 으로 뭔가 호출하는것이 있는데, 그document_list 자체가 게시글의 list이예요.

    그것은 보통 array배열로 documentItem이라는 클래스로 오브젝트를 만든 것을 가져오는 변수로 활용되었는데요,

    그렇다면 게시글 리스트를 볼 수 있는 게시판 목록 화면에서 동작이 될거예요.

    게시글 리스트 볼 수 있는 게시판 목록에서 게시글 리스트화면에 나타나는 데이터를 기준으로 가져오니 그것을 반복문 돌려서 차단한 값과 게시글적은 사람이 그 차단리스트에 채크 하도록 하고자 했는데,

    $val->stdClass:: 이렇게 호출하는 방식자체가 잘못되었죠.

    옛날 PHP에서는 어느정도 허용의 범주로 들어갔을지 모르겠지만 이미 $val 안에는 $docu_list 를 반복문 돌릴때 각각의 오브젝트를 $val안에 넣어버리면서 반복문을 돌렸으므로 (foreach 문 참고.) $val자체가 이미 클래스를 의미하게 되는데 그 클래스 안에 새로운 stdClass 이라는 오브젝트를 형성 시켜지지도 않은것을 호출 하고 그걸 ::get 이런식으로 함수를 호출했으니 $val->stdClass는 어떤 클래스도 생성되지 않은 것 같은데 ? 라고 오류를 보여주는 거예요.

    일반적으로 $변수명->오브젝트or함수명 혹은 $변수명::오브젝트or함수명
    이렇게 사용이 가능한데, -> :: 둘다 붙으면 앞에 변수명은 보통 어떤 클래스가 오는 것을 의미하게 됩니다.

    이미 $val 에서 만든 클래스가 있으니 앞선답변에서는 stdClass 부분을 지워서 테스트 해보라 햇고, 그다음 질문 에서는 $document_list가 없어서 발생된 에러였으니 반복문 위에서 그것이 배열이 맞는지 값은 있는지 채크 하는 코드를 입력하도록 했어요.
  • Lv24
    설명 같은것을 확인하기 위해서는 기본적으로 질문자님께서도PHP의 지식이 있어야 합니다 ㅠ

    이러한 변수안에 클래스인지 string타입인지 어떤것이 들어오는지랑 여러가지 타입들이 어떻게 들어오는지 반복문이 뭔지 for, foreach 와 같은 기본적인 프로그래밍 지식을 가지고 계셔야 정확하게 코드를 분석 가능합니다.

    이건 제가 말씀드린것처럼 저 딱 한줄만 봐서는 안되고, 윗줄부터 상관관계부터 파악 하셔야 합니다.

    그리고 애드온이다보니 그냥 Context::get 으로 가져오는것이 있다보니 이 Context클래스에서 get함수가 어떤 역할을 하는지 거기안에 document_list는 무엇인지 어떤 데이터가 담기는지 직접 볼 수 있는 디버깅 방식도 알고 계셔야.. 그나마 편하실겁니다.
  • Lv24 ? Lv1
    람보님 너무 자세한 설명 너무나 감사합니다 ㅠㅠ