PHP에서 stdClass 란 무엇입니까?
카테고리 없음PHP에서 stdClass 란 무엇입니까?
stdClass가 무엇인지 정의하십시오.
해결법
-
==============================
1.
stdClass는 PHP의 일반적인 빈 클래스로 Java의 Object 또는 Python의 객체와 비슷합니다 (편집 :하지만 보편적 인 기본 클래스로 실제로 사용되지는 않았지만이를 지적하기 위해 @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의 동적 속성을 참조하십시오.
-
==============================
2.
stdClass는 다른 유형을 객체로 형변환 할 때 사용되는 일반 '빈'클래스입니다. 다른 두 가지 대답을 말하는데 불구하고, stdClass는 PHP에서 객체의 기본 클래스가 아닙니다. 이것은 매우 쉽게 증명할 수 있습니다.
class Foo{} $foo = new Foo(); echo ($foo instanceof stdClass)?'Y':'N'; // outputs 'N'
나는 PHP에 기본 객체의 개념이 있다고 생각하지 않는다.
-
==============================
3.
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();
-
==============================
4.
또한 유의할 점은 json_decode ()를 사용하여 stdClass 객체를 생성 할 수 있다는 것입니다.
-
==============================
5.
마찬가지로,
$myNewObj->setNewVar = 'newVal';
자동으로 캐스팅 된 stdClass 객체를 생성합니다.
오늘 철자가 틀린 것을 발견했습니다.
$GLOBASLS['myObj']->myPropertyObj->myProperty = 'myVal';
시원한!
-
==============================
6.
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 문서의이 예제를 참조하십시오.
-
==============================
7.
사실 빈 stdClass를 만들려고 시도하고 빈 클래스와 속도를 비교했습니다.
class emp{}
그 다음에 1000 stdClasses와 emps를 만들었습니다 ... 빈 클래스는 약 1100 마이크로 초에서 수행되었고 stdClasses는 1700 마이크로 초가 걸렸습니다. 그래서 당신이 그렇게 나쁘게 (배열 쓰기 및 읽기 모두 훨씬 빠릅니다) 개체를 사용하려는 경우 데이터를 저장하기위한 자신의 더미 클래스를 만드는 것이 좋습니다 같아요.
-
==============================
8.
stdClass는 익명 클래스 또는 익명 객체입니다. 그건 사실이 아니야.
stdClass는 단지 미리 정의 된 클래스입니다. instanceof 연산자 또는 get_class 함수를 사용하여이를 확인할 수 있습니다. 특별한 것은 없습니다. PHP는 다른 값을 객체로 형변환 할 때이 클래스를 사용합니다.
stdClass가 프로그래머에 의해 사용되는 많은 경우, 배열은 유용한 함수와이 유즈 케이스가 실제 객체가 아닌 데이터 구조를 나타 내기 때문에 더 나은 옵션입니다.
-
==============================
9.
책에 대한 일부 데이터를 보유 할 새 오브젝트를 빠르게 작성하려는 경우. 다음과 같이하면됩니다.
$book = new stdClass; $book->title = "Harry Potter and the Prisoner of Azkaban"; $book->author = "J. K. Rowling"; $book->publisher = "Arthur A. Levine Books"; $book->amazon_link = "http://rads.stackoverflow.com/amzn/click/0439136369";
자세한 내용은 http://www.webmaster-source.com/2009/08/20/php-stdclass-storing-data-object-instead-array/ 사이트를 확인하십시오.
-
==============================
10.
php.net 매뉴얼은 stdClass가 무엇인지 사용자가 제공 한 몇 가지 확실한 설명과 예제를 가지고 있습니다. 특히이 스크립트는 http://php.net/manual/en/language.oop5.basic.php#92123, https : // stackoverflow.com/a/1434375/2352773.
-
==============================
11.
stdClass를 사용하면 익명의 클래스를 객체 캐스팅을 사용하면 OOP 스타일로 연관 배열의 키에 액세스 할 수도 있습니다. 일반 객체 속성에 액세스하는 것처럼 말입니다.
class Example { private $options; public function __construct(Array $setup) { // casting Array to stdClass object $this->options = (object) $setup; // access stdClass object in oop style - here transform data in OOP style using some custom method or something... echo $this->options->{'name'}; // ->{'key'} echo $this->options->surname; // ->key } } $ob1 = new Example(["name" => "John", "surname" => "Doe"]);
되풀이하다
-
==============================
12.
stClass는 PHP 자체에 의해 생성 된 빈 클래스이며 PHP 만 사용해야합니다. 그것은 단지 "빈"클래스가 아니기 때문에, PHP는 배열을 객체 스타일로 변환하기 위해 stdClass를 사용합니다. stdClass를 사용해야하는 경우 다음 두 가지 옵션을 사용하는 것이 좋습니다. 1- 배열 사용 (클래스보다 훨씬 빠름) 2 - 빈 클래스를 만들고 사용하십시오.
//example 1 $data=array('k1'=>'v1' , 'k2'=>'v2',....); //example 2 //creating an empty class is faster than instances an stdClass class data={} $data=new data(); $data->k1='v1'; $data->k2='v2';
배열 스타일 대신 객체 스타일을 사용하는 것에 대해 생각하게하는 것은 무엇입니까 ???
-
==============================
13.
stdclass는 PHP가 일부 데이터가있을 때 스크립트 해석을 멈추지 않도록하는 방법입니다. 불행히도이 클래스는 정의되지 않았습니다.
예 :
return $statement->fetchAll(PDO::FETCH_CLASS , 'Tasks');
여기서 데이터는 사전 정의 된 '작업'에 저장됩니다. 그러나 우리가 코드를 다음과 같이하면 :
return $statement->fetchAll(PDO::FETCH_CLASS );
PHP는 결과를 stdclass에 넣을 것입니다.
단순히 PHP는 말합니다 : 봐, 우리는 좋은 아이가 [개체] 여기 있지만 부모없이. 그래서, 우리는 그것들을 유아에게 보냅니다. Care Home stdclass :)
-
==============================
14.
또한 Casting을 사용하면 @Bandula가 제공 한 답변 에서처럼 객체를 만들 필요가 없다는 점에 유의할 가치가 있습니다. 대신 배열을 객체에 캐스트하면 stdClass가 반환됩니다. 예 :
$array = array( 'Property1'=>'hello', 'Property2'=>'world', 'Property3'=>'again', ); $obj = (object) $array; echo $obj->Property3;
출력 : 다시
-
==============================
15.
또한 객체를 사용하여 배열을 원하는 객체로 캐스트 할 수 있습니다.
Class Example { public $name; public $age; }
이제 Example 형식의 개체를 만들고 초기화하려면 다음 중 하나를 수행 할 수 있습니다.
$example = new Example(); $example->name = "some name"; $example->age = 22;
또는
$example = new Example(); $example = (object) ['name' => "some name", 'age' => 22];
두 번째 방법은 많은 속성을 가진 개체를 초기화하는 데 주로 유용합니다.
-
==============================
16.
2 개의 비어있는 stdClass는 엄격하게 동일하지 않다는 것을 명심하십시오. 이것은 조롱 거리를 쓸 때 매우 중요합니다.
php > $a = new stdClass(); php > $b = new stdClass(); php > var_dump($a === $b); bool(false) php > var_dump($a == $b); bool(true) php > var_dump($a); object(stdClass)#1 (0) { } php > var_dump($b); object(stdClass)#2 (0) { } php >
from https://stackoverflow.com/questions/931407/what-is-stdclass-in-php by cc-by-sa and MIT lisence