PHP Typumwandlung in meiner Klasse
warum dies nicht möglich ist:
$user = (User) $u[0];
doch das ist möglich
$bool = (boolean) $res['success'];
Ich benutze PHP-7.0.
Casting zum Objekt ist unsicher. Warum wollen Sie das tun? Nicht sicher, ob es relevant ist, können Sie
Was ist
soweit ich weiß, können Sie nur gegossen haben primitive Datentypen finden Sie unter [Type Casting] php.net/manual/de/language.types.type-juggling.php
ja php unterstützt keine implizite Konvertierung wie C# funktioniert: docs.microsoft.com/en-us/dotnet/csharp/programming-guide/...
instanceof
zu überprüfen, die Klasse des Objekts.Was ist
$u[0]
?soweit ich weiß, können Sie nur gegossen haben primitive Datentypen finden Sie unter [Type Casting] php.net/manual/de/language.types.type-juggling.php
ja php unterstützt keine implizite Konvertierung wie C# funktioniert: docs.microsoft.com/en-us/dotnet/csharp/programming-guide/...
InformationsquelleAutor SexyMF | 2017-03-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soweit ich weiß, in PHP können Sie nur gegossen auf einige Arten:
(siehe Typ-Casting)
Stattdessen könnten Sie instanceof zu überprüfen spezifischer Typ:
InformationsquelleAutor Jarlik Stepsto
Zusätzlich zu der Antwort, warum dies nicht möglich ist, würde ich vorschlagen, dass Sie schreiben, eine generator-Funktion, die ein Objekt erstellt, basierend auf Ihrer Eingabe. so würde es Aussehen
Haben und dann einen generator erstellen Sie eine neue
User
- Objekt, weisen Sie die richtigen Eigenschaften, etc. Sie konnte nur alles tun, diese in-place-natürlich, aber mit einer generator-Funktion macht Sie sicher, dass Sie nicht tun dies auf mehreren Standorten, UND Sie können private Eigenschaften wie ein class-member-Funktion. Es ist ein bisschen mehr Arbeit dann, nachdem es magisch zu arbeiten, aber nicht viel.Die einzige Frage, die Sie haben könnten, ist, wenn haben Sie ein anderes Objekt, das nicht setzen alle Einbauten, die Sie benötigen. Aber das ist ein Grund, wie die Interna verändern -> Sie wollen nicht zu verlassen.
Gibt es hacks gibt, die nahelegen, dass dies mit der Serialisierung. Ich würde vorschlagen, um zu Steuern Weg von Ihnen, Sie sind hackish und soweit ich bin besorgt, nicht ganz klar.
InformationsquelleAutor Nanne
Wenn Sie nur wollen, um sicherzustellen, eine variable ist Instanz von YourClass und lassen Sie die Ausnahmebehandlung an die typesystem können Sie folgende Funktion verwenden:
Hinweis: dies nicht wirklich tun, keine casting -, sondern es wirft exceptions bei der Klasse Konflikt und ermöglicht intellisense behandeln Sie es als eine Instanz der Ziel-Klasse.
InformationsquelleAutor Szabolcs Páll
Objekte und primitive Typen sind unterschiedlich. Da es heißt primitive Typen, Sie sind wirklich einfach, vielleicht nur 1 byte, 2 bytes oder 4 bytes, und bei den meisten 8 bytes.
Wenn wir sprechen über das Objekt, dieses Objekt können verschiedene Attribute mit den anderen. Dann die Frage von PHP wird ist, "ist dieses Objekt wirklich aus meiner Klasse?" "So konvertieren Sie das Objekt in meine Klasse?". Deshalb können Sie nicht analysieren sofort das Objekt mit
Dann, wie um Sie zu wirken? Keine Ahnung, aber in der Regel der Ansatz ist wie folgt:
hier ist Beispiel:
.
syntax. Aber bis das passiert, Sie ment$obj = MyAwesomeClass::fromArray($attributes);
.InformationsquelleAutor Hans Yulian
PHP unterstützt zwei Arten von Guss.
Implizite Umwandlung erfolgt durch PHP. Zum Beispiel bei der Division von zwei Ganzzahlen (5/2), ist das Ergebnis float (2.5). Diese Umwandlung erfolgt durch PHP.
Explizite Umwandlung kann von uns (Programmierer). Wie in Ihrer Frage, die Sie verwenden können () zu werfen, um einen neuen Datentyp. Aber, alles funktioniert nicht auf diese Weise. Manchmal kann dies zu Datenverlust führen (casting float (2.52) in eine ganze Zahl fallen wird der dezimal-Wert, was nützlich sein kann). Casting-Objekte können riskant sein, da verschiedene Objekte Verhalten sich unterschiedlich.
Erfahren Sie Mehr über Typ-Casting
So, wenn Sie denken, casting, um ein Objekt mit einem Objekt-Konstruktor.
Den Benutzer der Klasse sollte so etwas wie dieses.
In dieser Weise, können Sie Ihre eigenen Objekt zu manipulieren, Benutzer-Daten und mehr.
InformationsquelleAutor Supun Kavinda
Der Grund dafür ist, dass Sie "false" ein string ist und seine wahre. Aber false ist ein boolean.
Weiteres Beispiel hier:
echo "false" == true ? 111 : 222;
druckt 111.Wieder, ... "42" ist ein string, während 42 ist eine Zahl.
Können Sie immer überprüfen booleschen Wert einer Variablen Inhalten.
"PHP erfordert keine (oder Unterstützung) explizite Typ-definition in der Deklaration von Variablen; eine variable hat den Typ wird bestimmt durch den Kontext, in dem die variable verwendet wird. Das heißt, wenn ein string-Wert zugewiesen wird, der Variablen $var, $var wird zu einem string. Wenn ein integer-Wert zugewiesen $var, wird es ein integer."
Einem anderen Beispiel aus der Dokumentation:
Werfen Sie einen Blick type comparison tables.
InformationsquelleAutor sensorario