PHP में stdClass क्या है?




(11)

stdClass एक अज्ञात वर्ग या अज्ञात वस्तु नहीं है

यहां stdClass में अभिव्यक्तियां शामिल हैं जो stdClass एक अज्ञात वर्ग या यहां तक ​​कि अज्ञात वस्तु है। यह सच नहीं है।

stdClass सिर्फ एक नियमित पूर्वनिर्धारित वर्ग है। आप instanceof ऑपरेटर या फंक्शन get_class का उपयोग करके इसे देख सकते हैं। यहां कुछ विशेष नहीं है। ऑब्जेक्ट पर अन्य मानों कास्टिंग करते समय PHP इस वर्ग का उपयोग करता है।

कई मामलों में जहां प्रोग्रामर द्वारा stdClass का उपयोग किया जाता है, उपयोगी कार्यों के कारण सरणी बेहतर विकल्प है और तथ्य यह है कि यह उपयोगकेस डेटा संरचना का प्रतिनिधित्व करता है, वास्तविक वस्तु नहीं।

कृपया परिभाषित करें कि stdClass क्या है।


उपयोग में stdClass वस्तुओं

StdClass आपको अज्ञात कक्षाएं बनाने और ऑब्जेक्ट कास्टिंग के साथ अनुमति देता है, आप ओओपी शैली में एक एसोसिएटिव सरणी की कुंजी भी एक्सेस कर सकते हैं। जैसे आप नियमित ऑब्जेक्ट संपत्ति तक पहुंचेंगे।

उदाहरण

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"]);

गूंज जाएगा

जॉन डो


stClass php द्वारा बनाई गई एक खाली कक्षा है, और इसे केवल php द्वारा उपयोग किया जाना चाहिए, क्योंकि यह केवल "खाली" वर्ग नहीं है, php stdClass का उपयोग करने के लिए यदि आपको 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';

क्या किसी को सरणी शैली के बजाय ऑब्जेक्ट शैली का उपयोग करने के बारे में सोचने के लिए बनाता है ???


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';
    }
}

अब आपको पेज ऑब्जेक्ट के साथ एक नया पेजशो ऑब्जेक्ट बनाना होगा।

यहां इसके लिए एक नया क्लास टेम्पलेट लिखने की आवश्यकता नहीं है, आप फ्लाई पर कक्षा बनाने के लिए बस stdClass का उपयोग कर सकते हैं।

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

आप अपनी पसंद के किसी ऑब्जेक्ट को सरणी डालने के लिए object का भी उपयोग कर सकते हैं:

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];

दूसरी विधि कई गुणों के साथ वस्तुओं को शुरू करने के लिए अधिक उपयोगी है।


इसी तरह,

$myNewObj->setNewVar = 'newVal'; 

एक stdClass वस्तु पैदा करता है - ऑटो जाली

मैंने इसे गलत वर्तनी से आज पाया:

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

ठंडा!


ध्यान देने योग्य भी है, एक stdClass ऑब्जेक्ट json_decode() के उपयोग से भी बनाया जा सकता है।


यदि आप पुस्तक के बारे में कुछ डेटा रखने के लिए जल्दी से एक नई वस्तु बनाना चाहते हैं। आप ऐसा कुछ करेंगे:

$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..com/amzn/click/0439136369";

अधिक जानकारी के लिए कृपया साइट की जांच करें - http://www.webmaster-source.com/2009/08/20/php-stdclass-storing-data-object-instead-array/


stdClass PHP की जेनेरिक खाली कक्षा है, जावा में object या पायथन में object की तरह ( संपादित करें: लेकिन वास्तव में सार्वभौमिक बेस क्लास के रूप में उपयोग नहीं किया जाता है; धन्यवाद @ सीरान इसे इंगित करने के लिए धन्यवाद)।

यह अज्ञात वस्तुओं, गतिशील गुणों आदि के लिए उपयोगी है।

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 स्क्रिप्ट को समझने से रोकने से बचता है जब कक्षा में कुछ डेटा डाला जाना चाहिए, लेकिन दुर्भाग्य से इस वर्ग को परिभाषित नहीं किया गया था

उदाहरण :

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

यहां डेटा पूर्वनिर्धारित 'कार्य' में रखा जाएगा। लेकिन, अगर हमने इस तरह कोड किया था:

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

तो php परिणाम stdclass में डाल stdclass ।

बस php कहते हैं कि: देखो, हमारे पास एक अच्छे बच्चे हैं [ऑब्जेक्ट्स] यहां लेकिन माता-पिता के बिना। तो, हम उन्हें एक शिशु बच्चे केयर होम stdclass भेज देंगे :)







stdclass