Pertanyaan Apa itu stdClass di PHP?


Silakan tentukan apa stdClass aku s.


907
2018-05-31 05:49


asal


Jawaban:


stdClass adalah kelas kosong generik PHP, sejenisnya Object di Java atau object dengan Python (Edit: tetapi tidak benar-benar digunakan sebagai kelas dasar universal; Terima kasih @Komunitas untuk  menunjukkan ini).

Ini berguna untuk objek anonim, properti dinamis, dll.

Cara mudah untuk mempertimbangkan StdClass adalah sebagai alternatif untuk array asosiatif. Lihat contoh di bawah ini yang menunjukkan caranya json_decode() memungkinkan untuk mendapatkan turunan StdClass atau array asosiatif. Juga tetapi tidak ditampilkan dalam contoh ini, SoapClient::__soapCall mengembalikan turunan 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

Lihat Properti Dinamis dalam PHP dan StdClass untuk lebih banyak contoh.


677
2018-05-31 05:55



stdClass hanyalah kelas 'kosong' generik yang digunakan saat mentransmisikan tipe lain ke objek. Terlepas dari apa yang dua jawaban lainnya katakan, stdClass aku s tidak kelas dasar untuk objek dalam PHP. Ini dapat ditunjukkan dengan mudah:

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

Saya tidak percaya ada konsep objek dasar dalam PHP


1054
2018-06-14 11:13



stdClass adalah fitur PHP hebat lainnya. Anda dapat membuat kelas PHP anonim. Mari kita periksa sebuah contoh.

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

sekarang berpikir Anda memiliki kelas lain yang akan menginisialisasi dengan objek halaman dan jalankan basis di atasnya.

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

Sekarang Anda harus membuat objek PageShow baru dengan Objek Halaman.

Di sini tidak perlu menulis Class Template baru untuk ini, Anda cukup menggunakan stdClass untuk membuat Class on the fly.

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

80
2017-12-08 09:20



Juga perlu diperhatikan, sebuah stdClass objek dapat dibuat dari penggunaan json_decode() demikian juga.


58
2017-10-11 19:11



Juga,

$myNewObj->setNewVar = 'newVal'; 

menghasilkan objek stdClass - auto dicor

Saya menemukan ini hari ini dengan kesalahan eja:

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

Keren!


24
2018-05-19 13:47



Menggunakan stdClass Anda dapat membuat objek baru dengan properti itu sendiri. Pertimbangkan contoh berikut yang mewakili detail pengguna sebagai larik asosiatif.

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

Jika Anda perlu merepresentasikan detail yang sama seperti properti dari suatu objek, Anda dapat menggunakannya stdClass seperti di bawah ini.

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

Jika Anda seorang pengembang Joomla lihat contoh ini di dokumen Joomla untuk pemahaman lebih lanjut.


20
2018-04-06 14:21



Sebenarnya saya mencoba membuat stdClass kosong dan membandingkan kecepatan ke kelas kosong.

class emp{}

kemudian mulai membuat 1000 stdClasses dan emps ... kelas kosong dilakukan di sekitar 1100 mikrodetik sementara stdClasses mengambil lebih dari 1700 mikrodetik. Jadi saya kira lebih baik untuk membuat kelas boneka Anda sendiri untuk menyimpan data jika Anda ingin menggunakan objek untuk itu begitu buruk (array jauh lebih cepat untuk menulis dan membaca).


7
2018-03-23 15:02



stdClass bukanlah kelas anonim atau objek anonim

Jawaban di sini termasuk ekspresi itu stdClass adalah kelas anonim atau bahkan objek anonim. Itu tidak benar.

stdClass hanya kelas standar yang telah ditetapkan. Anda dapat memeriksa ini menggunakan instanceof operator atau fungsi get_class. Tidak ada yang istimewa di sini. PHP menggunakan kelas ini saat mentransmisikan nilai lain ke objek.

Dalam banyak kasus di mana stdClass digunakan oleh para programmer array adalah pilihan yang lebih baik, karena fungsi yang berguna dan fakta bahwa usecase ini mewakili struktur data bukan objek nyata.


6
2018-03-05 10:04



Jika Anda ingin cepat membuat objek baru untuk menampung beberapa data tentang buku. Anda akan melakukan sesuatu seperti ini:

$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";

Silakan periksa situs - http://www.webmaster-source.com/2009/08/20/php-stdassass-storing-data-object-instead-array/ untuk lebih jelasnya.


3
2017-10-14 10:02