정의하십시오 stdClass
.
답변
stdClass
Object
Java 또는 object
Python 과 같은 종류의 PHP의 일반 빈 클래스입니다 ( 편집 : 실제로 범용 기본 클래스로 사용되지는 않습니다 . 이 점 을 지적한 @Ciaran ).
익명 객체, 동적 속성 등에 유용합니다.
StdClass를 고려하는 쉬운 방법은 연관 배열의 대안입니다. json_decode()
StdClass 인스턴스 또는 연관 배열을 얻는 방법을 보여주는 아래 예제를 참조하십시오 . 이 예제에서는 표시되지 않았지만 SoapClient::__soapCall
StdClass 인스턴스를 반환합니다.
<?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
단지 미리 정의 된 정규 클래스입니다. instanceof
operator 또는 function을 사용하여이를 확인할 수 있습니다 get_class
. 특별한 것은 없습니다. PHP는 다른 값을 객체로 캐스팅 할 때이 클래스를 사용합니다.
stdClass
프로그래머가 사용하는 많은 경우 유용한 기능과이 사용 사례 가 실제 객체가 아닌 데이터 구조를 나타 내기 때문에 배열이 더 나은 옵션입니다.