Proszę zdefiniować co stdClass
jest.
1049
stdClass
jest ogólną pustą klasą PHP, trochę jak Object
w Javie lub object
Pythonie ( Edycja: ale tak naprawdę nie jest używana jako uniwersalna klasa podstawowa; dzięki @Ciaran za zwrócenie na to uwagi ).
Jest przydatny w przypadku obiektów anonimowych, właściwości dynamicznych itp.
Prostym sposobem na rozważenie StdClass jest alternatywa dla tablicy asocjacyjnej. Zobacz poniższy przykład, który pokazuje, w jaki sposób json_decode()
można uzyskać instancję StdClass lub tablicę asocjacyjną. Również, ale nie pokazano w tym przykładzie, SoapClient::__soapCall
zwraca instancję 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
Zobacz Dynamiczne właściwości w PHP i StdClass, aby uzyskać więcej przykładów.
{}
konstrukcja JavaScript .function(StdClass $a, array $params)
Sprawdzenie, czy$a
jest obiektem iinstanceof
.stdClass
jest po prostu ogólną „pustą” klasą używaną podczas rzutowania innych typów na obiekty. Pomimo tego, co mówią dwie pozostałe odpowiedzi, niestdClass
jest klasą podstawową dla obiektów w PHP. Można to dość łatwo wykazać:Nie wierzę, że istnieje koncepcja podstawowego obiektu w PHP
źródło
stdClass to kolejna świetna funkcja PHP. Możesz stworzyć anonimową klasę PHP. Sprawdźmy przykład.
teraz myślę, że masz inną klasę, która zainicjuje się z obiektem strony i wykona na nim bazę.
Teraz musisz utworzyć nowy obiekt PageShow za pomocą obiektu strony.
Tutaj nie ma potrzeby pisania nowego szablonu klasy. Możesz po prostu użyć stdClass, aby utworzyć klasę w locie.
źródło
stdClass
.Warto również zauważyć, że
stdClass
obiekt może zostać utworzony również z użyciajson_decode()
.źródło
True
. Wartości logiczne są małymi literamitrue
lubfalse
.Za pomocą stdClass możesz stworzyć nowy obiekt z własnymi właściwościami. Rozważ następujący przykład, który reprezentuje dane użytkownika jako tablicę asocjacyjną.
Jeśli chcesz przedstawić te same szczegóły co właściwości obiektu, możesz użyć stdClass jak poniżej.
Jeśli jesteś programistą Joomla, zapoznaj się z tym przykładem w dokumentacji Joomla w celu dalszego zrozumienia.
źródło
Również,
zwraca obiekt stdClass - automatycznie rzutowany
Dowiedziałem się tego dzisiaj, popełniając błędy w pisowni:
Fajne!
źródło
stdClass nie jest anonimową klasą ani anonimowym obiektem
Odpowiedzi tutaj obejmują wyrażenia
stdClass
będące anonimową klasą lub nawet anonimowym obiektem. To nie prawda.stdClass
jest zwykłą predefiniowaną klasą. Możesz to sprawdzić za pomocąinstanceof
operatora lub funkcjiget_class
. Nie ma tu nic specjalnego. PHP używa tej klasy do rzutowania innych wartości na obiekty.W wielu przypadkach, gdy
stdClass
są używane przez programistów, tablica jest lepszą opcją, ze względu na przydatne funkcje i fakt, że ta skrzynka reprezentuje strukturę danych, a nie rzeczywisty obiekt.źródło
Warto również zauważyć, że korzystając z Castingu, tak naprawdę nie musisz tworzyć obiektu, jak w odpowiedzi udzielonej przez @Bandula. Zamiast tego możesz po prostu rzucić tablicę na obiekt i zwracana jest klasa stdClass. Na przykład:
Output: again
źródło
Właściwie próbowałem stworzyć pustą klasę stdClass i porównałem prędkość do pustej klasy.
następnie kontynuował tworzenie 1000 stdClasses i emps ... puste klasy wykonano w około 1100 mikrosekund, podczas gdy stdClasses zajęły ponad 1700 mikrosekund. Sądzę więc, że lepiej jest stworzyć własną sztuczną klasę do przechowywania danych, jeśli chcesz tak źle używać obiektów (tablice są znacznie szybsze zarówno do zapisu, jak i odczytu).
źródło
używane obiekty stdClass
StdClass pozwala tworzyć anonimowe klasy, a rzutowanie obiektów umożliwia dostęp do kluczy tablicy asocjacyjnej w stylu OOP. Tak jak w przypadku dostępu do zwykłej właściwości obiektu.
Przykład
odbije się echem
źródło
Jeśli chcesz szybko utworzyć nowy obiekt do przechowywania danych o książce. Zrobiłbyś coś takiego:
Proszę sprawdzić stronę - http://www.webmaster-source.com/2009/08/20/php-stdclass-storing-data-object-instead-array/, aby uzyskać więcej informacji.
źródło
Należy pamiętać, że 2 puste klasy stdClass nie są ściśle równe. Jest to bardzo ważne przy pisaniu kpiących oczekiwań.
źródło
Podręcznik php.net zawiera kilka solidnych wyjaśnień i przykładów dostarczonych przez użytkowników na temat tego, czym jest stdClass, szczególnie podoba mi się ten http://php.net/manual/en/language.oop5.basic.php#92123 , https: // stackoverflow.com/a/1434375/2352773 .
źródło
stdclass jest sposobem, w jaki php unikaj przerywania interpretacji skryptu, gdy pewne dane muszą zostać umieszczone w klasie, ale niestety ta klasa nie została zdefiniowana
Przykład:
Tutaj dane zostaną umieszczone w predefiniowanych „Zadaniach”. Ale gdybyśmy zrobili kod w ten sposób:
a później php umieści wyniki stdclass .
po prostu phpmówi: patrz, mamy dobre DZIECI [Przedmioty] Tutaj, ale bez Rodziców. Wyślemy je więc do Domu Opieki nad Niemowlakiemstdclass :)
źródło
Możesz także użyć
object
do rzutowania tablic na wybrany obiekt:Teraz, aby utworzyć obiekt typu
Example
i zainicjować go, możesz wykonać jedną z następujących czynności:LUB
Druga metoda jest najbardziej przydatna do inicjowania obiektów o wielu właściwościach.
źródło
stClass jest pustą klasą utworzoną przez sam php i powinien być używany tylko przez php, ponieważ nie jest to tylko „pusta” klasa, php używa stdClass do konwersji tablic na styl obiektowy, jeśli potrzebujesz użyć stdClass, polecam dwie lepsze opcje : 1- użyj tablic (znacznie szybciej niż klasy) 2- utwórz własną pustą klasę i użyj jej
co sprawia, że ktoś myśli o użyciu stylu obiektowego zamiast stylu tablicowego?
źródło
Powodem, dla którego mamy stdClass, jest to, że w PHP nie ma sposobu, aby odróżnić normalną tablicę od tablicy powiązanej (tak jak w JavaScript masz
{}
obiekt i[]
tablicę, aby je odróżnić).Stwarza to problem dla pustych obiektów. Weź to na przykład.
PHP:
Załóżmy, że chcesz JSON zakodować zmienną $ c
Powiedzmy teraz, że usunąłeś wszystkie klucze z
$b
pustych. Ponieważ$b
jest teraz pusty (usunąłeś wszystkie klucze, pamiętasz?), Wygląda na to, że[]
może to być tablica lub obiekt, jeśli na to spojrzysz.Więc jeśli ponownie zrobisz kod_json, wynik będzie inny
Jest to problem, ponieważ wiemy,
b
że miała to być tablica stowarzyszona, ale PHP (lub jakakolwiek funkcja taka jak json_encode) nie.Więc stdClass przychodzi na ratunek. Ponownie biorąc ten sam przykład
Więc teraz, nawet jeśli usuniesz wszystkie klucze z
$b
i sprawisz, że będą puste, ponieważ jest to stdClass, nie będzie to miało znaczenia, a kiedy json_encode to otrzymasz:Jest to również powód
json_encode
ijson_decode
domyślnie zwraca stdClass.źródło