Was den Java-Shop überraschte, als er PHP schrieb

Ich kenne nur Java und JavaScript (ein wenig), deshalb habe ich mich entschlossen, PHP bei der Arbeit zu berühren, und vorher habe ich versucht, nach dem Studium ein Oleore-Framework zu erstellen. Zu dieser Zeit eh! Ich werde ungefähr zeichnen, worüber ich überrascht war und worauf ich mich eingelassen habe.

Zur Erinnerung, in diesem Artikel bin ich im Java-Bereich und schreibe einfach auf, was ich dachte, als ich PHP berührte, und bestand darauf, dass PHP schlecht oder Java gut war. Ich habe nicht die Absicht, dies zu tun.

Die Verkettung von Zeichenketten ist . (Punkt)

Greifen Sie in Java mit "." Auf die Elemente eines Objekts zu, z. B. "instance.member ()". Andererseits ist . in PHP ein Operator, der Zeichenfolgen verkettet. Ich habe gerade "objcet.doSomething ()" geschrieben und mich oft gefragt, warum es nicht funktioniert hat ...

Funktion kann nicht überladen werden

Dies gilt nicht nur für PHP, sondern Funktionen können nicht überladen werden. Es gibt Standardargumente, verwenden Sie sie also gut.

Der übergeordnete Klassenkonstruktor wird nicht explizit aufgerufen

Dies war vielleicht das Schockierendste. In der Java-Welt handelt es sich um eine untergeordnete Klasse mit einer übergeordneten Klasse. Wenn die übergeordnete Klasse nicht korrekt initialisiert wird, kann die untergeordnete Klasse nicht vorhanden sein. Es war schockierend, dass eine untergeordnete Instanz existieren konnte, ohne dass der Elternteil initialisiert wurde.

Rückgabewert false zeigt Fehler an

In PHP wird häufig false als Rückgabewert verwendet, um einen Verarbeitungsfehler anzuzeigen. Wenn Sie eine Zeichenfolge nicht zurückgeben, wenn sie normal endet, wird false zurückgegeben, was Ihr Herz höher schlagen lässt, wenn Sie sie wie Java hören, aber genau das ist es.

Array als Wert übergeben

Wenn Sie in Java ein Array als Argument übergeben, wird es als Referenz übergeben. Beeinflusst das aufrufende Array am Ziel. Da es jedoch im PHP-Standard als Wert übergeben wird, hat dies keinen Einfluss auf den Wert des Aufrufers. Wenn Sie beim Definieren einer Funktion wie "function callFunc (& $ array)" & vor dem Argument hinzufügen, wird es als Referenz übergeben. Ich bin der Meinung, dass das Vorbeigehen am Preis ein Engpass bei der Leistung sein kann, aber ich frage mich, ob ich mir nicht zu viele Sorgen machen muss → Es scheint, dass ich mir nicht zu viele Sorgen machen muss (siehe Kommentare).

Es gibt keinen Bytetyp

Verwenden Sie bei der Byte-Verarbeitung in PHP eine Variable vom Typ String. Es scheint im binären Meer zu schwimmen, indem Funktionen wie Ein- und Auspacken voll genutzt werden. Es ist ziemlich schwierig, wenn man sich nicht daran gewöhnen kann.

Interne Kodierung von Strings

Da es sich um die Zeichenkette handelt, ist der nächste hier. Die Java-Zeichenfolge ist einfach, da sie den Inhalt von UTF-16 enthält. Die interne Codierung von PHP scheint sich jedoch je nach Ausführungsumgebung zu unterscheiden. Wenn Sie den Code nicht in diesem Sinne schreiben, werden Sie bald verstümmelt.

Es gibt kein Äquivalent zum privaten statischen Finale

Es gibt verschiedene Möglichkeiten, Konstanten in PHP darzustellen. definieren und const. Dies ist jedoch ohnehin ein öffentlicher Bereich. Sie können eine geschlossene Konstante nicht nur in der Klasse erstellen. → Es scheint, dass Sie es mit neuem PHP schaffen können (siehe Kommentare)

Notiz kann nicht gefangen werden

Ich sehe oft Notice hogehoge. Wenn Sie der Meinung sind, dass eine Ausnahme hinter die Kulissen geworfen wird und Sie die Verarbeitung an einen geeigneten Handler übertragen können, wenn Sie sie abfangen, können Sie sie nicht abfangen. Natürlich scheint es eine Alternative zu geben, aber zuerst war ich überrascht.

Es gibt keine getSession (false)

Von hier aus die Geschichte der Java EE Session. In PHP gibt es keinen Prozess, der getSession (false) entspricht. Es bedurfte einiger Einfallsreichtum, um den Prozess zu schreiben, "wenn die Sitzung nicht begonnen hatte". ..

Objekte können nicht in einer Sitzung gespeichert werden

Sitzungen können nur Zeichenfolgen oder Zahlen enthalten. </ s> → Richtig, "Referenztyp kann nicht gespeichert werden", daher war "nur Zeichenfolgen oder Zahlen können verwendet werden" nicht korrekt. </ small>

Wenn Sie ein Objekt oder Array in eine Sitzung einfügen möchten, müssen Sie es vor dem Speichern serialisieren. Unserialize zum Abrufen.

Der Ablauf von Sitzungscookies verlängert </ s> nicht automatisch

Mit PHP können Sie auch ein Sitzungsablaufdatum festlegen. Das hier festgelegte Ablaufdatum ist jedoch die Zeit nach Beginn der Sitzung. Angenommen, die Sitzung läuft in 30 Minuten ab. Ich habe zum Zeitpunkt 0 eine Sitzung erstellt. Wenn Sie nach 10 Minuten erneut auf den Bildschirm zugreifen, verlängert Java den Sitzungsablauf zu diesem Zeitpunkt um 30 Minuten. Mit anderen Worten, die Zeitüberschreitungszeit beträgt 40 Minuten, aber das PHP-Cookie wächst nicht. Es tritt eine Zeitüberschreitung bei der ersten festgelegten Zeit auf. Sie müssen ein wenig entwickeln, um die Sitzungsstrategie Java </ s> ähnlich zu machen Hier besteht die Möglichkeit, dass das Verständnis ein wenig grundlegend falsch ist. Untersuchen Sie es daher vor dem Bearbeiten

Cookies verschwinden auch dann nicht, wenn die Sitzung gelöscht wird

In PHP können Sie die Funktion session_destroy verwenden, um eine Sitzung zu zerstören. Dadurch werden jedoch nur die Sitzungsdaten auf der Serverseite gelöscht, und das Sitzungscookie auf der Browserseite bleibt erhalten. Um eine Sitzung zu löschen, müssen Sie das Verfahren zum Verwerfen von Sitzungsdaten auf der Serverseite ausführen → Löschen des Cookies im Browser.

User Contributed Notes Der letzte Teil, der bis zum Ende ging. Die PHP-Referenz heißt User Contributed Notes, und Sie können Tipps lesen, die von tatsächlichen Benutzern geschrieben wurden. Ich war neidisch auf diese Kultur.

Recommended Posts