[php] PHP에서 stdClass 란 무엇입니까?

정의하십시오 stdClass.



답변

stdClassObjectJava 또는 objectPython 과 같은 종류의 PHP의 일반 빈 클래스입니다 ( 편집 : 실제로 범용 기본 클래스로 사용되지는 않습니다 . 이 점 지적한 @Ciaran ).

익명 객체, 동적 속성 등에 유용합니다.

StdClass를 고려하는 쉬운 방법은 연관 배열의 대안입니다. json_decode()StdClass 인스턴스 또는 연관 배열을 얻는 방법을 보여주는 아래 예제를 참조하십시오 . 이 예제에서는 표시되지 않았지만 SoapClient::__soapCallStdClass 인스턴스를 반환합니다.

<?php
//Example with StdClass
$json = '{ "foo": "bar", "number": 42 }';
$stdInstance = json_decode($json);
echo $stdInstance->foo . PHP_EOL; //"bar"
echo $stdInstance->number . PHP_EOL; //42
//Example with associative array
$array = json_decode($json, true);
echo $array['foo'] . PHP_EOL; //"bar"
echo $array['number'] . PHP_EOL; //42

더 많은 예제 는 PHP와 StdClass의 동적 속성을 참조하십시오 .


답변

stdClass다른 유형을 객체에 캐스팅 할 때 사용되는 일반적인 ‘빈’클래스입니다. 다른 두 가지 대답에도 불구하고 PHP의 객체에 대한 기본 클래스 stdClass아닙니다 . 이것은 상당히 쉽게 입증 될 수 있습니다 :

class Foo{}
$foo = new Foo();
echo ($foo instanceof stdClass)?'Y':'N';
// outputs 'N'

PHP에 기본 객체의 개념이 있다고 생각하지 않습니다.


답변

stdClass는 또 다른 훌륭한 PHP 기능입니다. 익명의 PHP 클래스를 만들 수 있습니다. 예를 살펴 보겠습니다.

$page=new stdClass();
$page->name='Home';
$page->status=1;

이제 페이지 객체로 초기화하고 그 기반을 실행할 다른 클래스가 있다고 생각하십시오.

<?php
class PageShow {

    public $currentpage;

    public function __construct($pageobj)
    {
        $this->currentpage = $pageobj;
    }

    public function show()
    {
        echo $this->currentpage->name;
        $state = ($this->currentpage->status == 1) ? 'Active' : 'Inactive';
        echo 'This is ' . $state . ' page';
    }
}

이제 Page Object를 사용하여 새 PageShow 객체를 만들어야합니다.

여기에 새로운 클래스 템플릿을 작성할 필요가 없습니다. stdClass를 사용하여 클래스를 즉시 생성 할 수 있습니다.

    $pageview=new PageShow($page);
    $pageview->show();


답변

또한 주목할만한 점은 stdClass객체를 사용 하여 객체를 만들 수 있다는 json_decode()것입니다.


답변

stdClass 를 사용하면 자체 속성으로 새 객체를 만들 수 있습니다. 사용자의 세부 사항을 연관 배열로 나타내는 다음 예제를 고려하십시오.

$array_user = array();
$array_user["name"] = "smith john";
$array_user["username"] = "smith";
$array_user["id"] = "1002";
$array_user["email"] = "smith@nomail.com";

객체의 속성과 동일한 세부 정보를 나타내야 할 경우 아래와 같이 stdClass 를 사용할 수 있습니다 .

$obj_user = new stdClass;
$obj_user->name = "smith john";
$obj_user->username = "smith";
$obj_user->id = "1002";
$obj_user->email = "smith@nomail.com";

Joomla 개발자 인 경우 추가 이해를 위해 Joomla 문서에서이 예제를 참조하십시오 .


답변

마찬가지로,

$myNewObj->setNewVar = 'newVal'; 

stdClass 객체를 생성합니다-자동 캐스트

나는 오늘 철자가 틀렸다는 것을 알았습니다.

$GLOBASLS['myObj']->myPropertyObj->myProperty = 'myVal';

멋있는!


답변

stdClass는 익명 클래스 또는 익명 객체가 아닙니다.

여기에 답변 stdClass은 익명 클래스 또는 익명 객체 인 표현식을 포함 합니다. 사실이 아닙니다.

stdClass단지 미리 정의 된 정규 클래스입니다. instanceofoperator 또는 function을 사용하여이를 확인할 수 있습니다 get_class. 특별한 것은 없습니다. PHP는 다른 값을 객체로 캐스팅 할 때이 클래스를 사용합니다.

stdClass프로그래머가 사용하는 많은 경우 유용한 기능과이 사용 사례 가 실제 객체가 아닌 데이터 구조를 나타 내기 때문에 배열이 더 나은 옵션입니다.