복붙노트

PHP에서 stdClass 란 무엇입니까?

카테고리 없음

PHP에서 stdClass 란 무엇입니까?

stdClass가 무엇인지 정의하십시오.

해결법

  1. ==============================

    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. ==============================

    2.

    stdClass는 다른 유형을 객체로 형변환 할 때 사용되는 일반 '빈'클래스입니다. 다른 두 가지 대답을 말하는데 불구하고, stdClass는 PHP에서 객체의 기본 클래스가 아닙니다. 이것은 매우 쉽게 증명할 수 있습니다.

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

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

  3. ==============================

    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. ==============================

    4.

    또한 유의할 점은 json_decode ()를 사용하여 stdClass 객체를 생성 할 수 있다는 것입니다.

  5. ==============================

    5.

    마찬가지로,

    $myNewObj->setNewVar = 'newVal'; 
    

    자동으로 캐스팅 된 stdClass 객체를 생성합니다.

    오늘 철자가 틀린 것을 발견했습니다.

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

    시원한!

  6. ==============================

    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. ==============================

    7.

    사실 빈 stdClass를 만들려고 시도하고 빈 클래스와 속도를 비교했습니다.

    class emp{}
    

    그 다음에 1000 stdClasses와 emps를 만들었습니다 ... 빈 클래스는 약 1100 마이크로 초에서 수행되었고 stdClasses는 1700 마이크로 초가 걸렸습니다. 그래서 당신이 그렇게 나쁘게 (배열 쓰기 및 읽기 모두 훨씬 빠릅니다) 개체를 사용하려는 경우 데이터를 저장하기위한 자신의 더미 클래스를 만드는 것이 좋습니다 같아요.

  8. ==============================

    8.

    stdClass는 익명 클래스 또는 익명 객체입니다. 그건 사실이 아니야.

    stdClass는 단지 미리 정의 된 클래스입니다. instanceof 연산자 또는 get_class 함수를 사용하여이를 확인할 수 있습니다. 특별한 것은 없습니다. PHP는 다른 값을 객체로 형변환 할 때이 클래스를 사용합니다.

    stdClass가 프로그래머에 의해 사용되는 많은 경우, 배열은 유용한 함수와이 유즈 케이스가 실제 객체가 아닌 데이터 구조를 나타 내기 때문에 더 나은 옵션입니다.

  9. ==============================

    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. ==============================

    10.

    php.net 매뉴얼은 stdClass가 무엇인지 사용자가 제공 한 몇 가지 확실한 설명과 예제를 가지고 있습니다. 특히이 스크립트는 http://php.net/manual/en/language.oop5.basic.php#92123, https : // stackoverflow.com/a/1434375/2352773.

  11. ==============================

    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. ==============================

    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. ==============================

    13.

    stdclass는 PHP가 일부 데이터가있을 때 스크립트 해석을 멈추지 않도록하는 방법입니다. 불행히도이 클래스는 정의되지 않았습니다.

    예 :

     return $statement->fetchAll(PDO::FETCH_CLASS  , 'Tasks');
    

    여기서 데이터는 사전 정의 된 '작업'에 저장됩니다. 그러나 우리가 코드를 다음과 같이하면 :

     return $statement->fetchAll(PDO::FETCH_CLASS );
    

    PHP는 결과를 stdclass에 넣을 것입니다.

    단순히 PHP는 말합니다 : 봐, 우리는 좋은 아이가 [개체] 여기 있지만 부모없이. 그래서, 우리는 그것들을 유아에게 보냅니다. Care Home stdclass :)

  14. ==============================

    14.

    또한 Casting을 사용하면 @Bandula가 제공 한 답변 에서처럼 객체를 만들 필요가 없다는 점에 유의할 가치가 있습니다. 대신 배열을 객체에 캐스트하면 stdClass가 반환됩니다. 예 :

    $array = array(
        'Property1'=>'hello',
        'Property2'=>'world',
        'Property3'=>'again',
    );
    
    $obj = (object) $array;
    echo $obj->Property3;
    

    출력 : 다시

  15. ==============================

    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. ==============================

    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 >
    
  17. from https://stackoverflow.com/questions/931407/what-is-stdclass-in-php by cc-by-sa and MIT lisence