2010-03-24 5 views

답변

41

이것은 사실이 아닙니다.

get_object_vars는 범위 - 민감 무관 visbility의 정적 속성을 제외한 모든 표시 특성을 반환한다. 수업 외에서 전화를 걸면 공개 회원 만 볼 수 있습니다. 파생 된 클래스에서 보호 된 멤버와 공개 멤버를 얻을 수 있습니다. 수업 자체에서부터 모든 구성원을 얻을 수 있습니다. 배열 키는 속성 이름을 나타내며 맹 글링되지 않습니다.

캐스트는 적어도 PHP 5.3.0에서 모든 객체 속성 public 및 기타를 반환합니다.

  • public : 속성의 이름은 자신의 보호 수준에 따라 엉망이되어 동일, 엉망이없는 속성 이름에
  • protected : 속성에 대한 키 이름은 *
  • private로 시작 속성에 대한 키 이름 클래스 이름으로 시작합니다.

자세한 내용은 casting to an array을 참조하십시오.

귀하의 상황에 가장 적합한 것을 더 잘 이해하시기 바랍니다.

+7

'(배열)'캐스트에 대해 보호를위한'*'와 전용 멤버를위한 * classname *은 널 바이트 ('\ x00')로 묶여 있기 때문에 엄격히'\ x00 * \ x00 '로, 보호 된 멤버는 '\ x00className \ x00'과 같은 개인 멤버도 마찬가지입니다. 관련 항목 : ** [PHP에서 객체와 객체의 배열을 배열로 - 재미있는 동작] (http://stackoverflow.com/questions/6325447/array-to-object-and-object-to-array-in-php-interesting -behaviour/6325631 # 6325631) ** – hakre

+1

또 다른 차이점 (PHP 5 이상) :'get_object_vars'를 사용하면 키가 int 인 경우 캐스팅됩니다. 캐스팅은 문자열 인덱스를 반환합니다 (https://3v4l.org/). 2Wb9j – Sherbrow

2

get_object_vars() 기능은 원하는 효과를 얻기위한 명확한 방법입니다. 배열에 캐스팅하는 것이 해결책이기는하지만이 동작은 이후 버전의 PHP에서 변경 될 수 있습니다.

두 방법간에 실제 차이가 있는지는 알 수 없지만 위의 인수를 사용하면이 기능을 사용할 수 있습니다.

+2

왜 배열 캐스트의 함수가 함수보다 덜 신뢰할 만합니까? 문서를 지원합니까? – zneak

1

실제로 필요한 것은 무엇입니까? get_object_vars()는 비공개 및 보호 된 멤버를 표시하지 않습니다. 예제는 설명서의 this comment을 참조하십시오.