Key Takeaways
- httplug, ein Projekt von PHP-HTTP, erm?glicht eine einfache Injektion eines jeden HTTP-Clients in ein SDK, das eine L?sung für Anwendungen bereitstellt, die bereits über einen bevorzugten HTTP-Client verfügen und die Verwendung von Guzzel vermeiden m?chten. .
- Das HTTPLUG-Schnittstellenpaket und das Guzzle 6 k?nnen mit dem Komponisten mit dem Befehl PHP-HTTP/Guzzle6-Adapter zusammengezogen werden. Dies erm?glicht die Verwendung von Guzzle 6 oder einem anderen Adapter, der die HTTPClient -Schnittstelle von HTTPLUG implementiert.
- Das PHP-HTTP-Projekt zielt darauf ab, alle HTTP-Clients in PHP maximal zu unterstützen, einschlie?lich Guzzle 5 und 6 sowie Zend1 und 2., dies erm?glicht keine Konflikte mit installierten Client-Versionen und einfachem Einstecken des entsprechenden Adapters.
- Der Diffbot SDK wurde psr-7 kompatibel und empf?nglich für andere Implementierungen von HTTP-Clients. Es braucht nur einen Adapter, der die HTTPLUG -Schnittstelle respektiert, damit alles über die Box funktioniert.
- httplug bietet einen neuen Ansatz zur Abstraxing von HTTP -Client -Implementierungen in Apps und bietet Erweiterbarkeit für die Kosten einer zus?tzlichen Abstraktionsebene.
Dieser Artikel wurde von Márk Sági-Kazár und David Buchmann geprüft. Vielen Dank an alle Peer -Rezensenten von SitePoint, die SitePoint -Inhalte so gut wie m?glich gemacht haben!
In einer früheren Serie haben wir einen PHP -Client für Diffbot erstellt. Der Kunde arbeitet gut und nutzt relativ weit verbreitet - wir haben sie sogar in einer Live -App getestet, um sicherzustellen, dass es auf NACH ist - aber es h?ngt stark von Guzzle 5 ab.
Es gibt zwei Probleme damit:
- Guzzle 6 ist aus und unterstützt PSR 7. W?hrend der Autor von Guzzle behauptet, Guzzle 5 wird auf absehbare Zeit unterstützt, ist es sicherer, seine Langlebigkeit skeptisch gegenüber zu sein. Au?erdem ist es, w?hrend PSR 7 seine Macken hat, gut, PSRS zu folgen, wenn auch nur für die Kompatibilit?t mit anderen Projekten
- Jemand, der unseren Kunden in seiner App implementiert, hat m?glicherweise bereits einen bevorzugten HTTP -Client in Gebrauch und m?chte seine als ihre Verwendung verwenden. Wir sollten eine einfache Injektion von in unserem SDK HTTP -Client in unserem SDK erm?glichen.
zuf?llig gibt es ein neues Projekt, das es uns erm?glicht, genau das zu tun: httplug.
Hinweis: Sie müssen mit der internen Logik des Diffbot -SDK nicht vertraut sein, um mitzumachen. Der Prozess in diesem Artikel gilt für jedes Paket mit einer konkreten HTTP -Client -Implementierung und ist leicht zu befolgen.
php-http und httplug
php-http ist eine GitHub-Organisation für HTTP-verwandte Tools in PHP. Es bietet HTTPLUG, eine Sammlung von Schnittstellen und Ausnahmen, um einen minimalen HTTP-Client-Vertrag auf der PSR-7-Anfrage und -antwort zu definieren. Implementierungen dieses Vertrags Bereitstellen das virtuelle Paket PHP-HTTP/Client-Implementation.
Dies bedeutet, dass jemand, der Guzzle 6 verwendet, einen PHP-HTTP/Guzzle6-Adapter ben?tigt, um den Adapter, das HTTPLUG-Schnittstellenpaket und das Guzzle 6 selbst als Abh?ngigkeit des Adapters zu ziehen.
.httplug ist der Einstiegspunkt für ein wiederverwendbares Paket. Es ist die Client -Abstraktion, auf der alle Clients (wie der Guzzle6 -Adapter) basieren. Diese Kunden nutzen dann ihre zugrunde liegenden Pakete / Abh?ngigkeiten weiter - in diesem Fall Guzzle 6.
unten nach oben:
- Ein HTTP -Client existiert (Guzzle 6)
- Ein Guzzle 6 -Adapter wird mit Httplug als Schnittstelle dafür erstellt. Wickelt Guzzle 6
- Eine App, die in der Lage sein muss, HTTP -Anrufe zu t?tigen, erfordert eine HTTPLUG -HTTPCLIENT -Schnittstelle und nicht guzzle 6 direkt
- Die App kann dann Guzzle 6 oder einen anderen Adapter verwenden, der die HTTPClient -Schnittstelle von HTTPLUG implementiert und ein weiteres HTTP -Client von Drittanbietern einwickelt
Der Plan des Teams besteht darin, alle verschiedenen HTTP -Clients in PHP Land maximal zu unterstützen: Guzzle 6, Guzzle 5, Zend2, Zend1 usw. Auf diese Weise hat ein Benutzer eines Frameworks oder einer App keine Konflikte mit installierten Konflikten Client -Versionen und schlie?en einfach den entsprechenden Adapter in den Mix an.
Beachten Sie, dass wir die Begriffe Adapter und Client
hier fast austauschbar verwenden - die auf HTTPLUG basierenden Adapter sind beide. Sie sind Wrapper für bestehende Kunden, aber direkt als Kunden selbst verwendet.Unser Plan in diesem Beitrag ist es, die Betonguzzle 5 Abh?ngigkeit des PHP -Clients von Diffbot durch die HTTPLUG -Version zu ersetzen.
Hinweis: HTTPLUG- und Verwandte Pakete sind Alpha -Software und k?nnen als solche ge?ndert werden. Es ist ein riskantes Unterfangen, etwas zu konvertieren, um sie zu verwenden.
Bootstrapping
Wie üblich wird empfohlen, dass wir das Geh?ft verbessert haben, um unsere Umgebung zu starten. Sobald wir fertig sind, k?nnen wir die aktuelle stabile Version des SDK klonen und testen:
git clone https://github.com/swader/diffbot-php-client cd diffbot-php-client git checkout tags/0.4.5 composer install phpunit
Der letzte Befehl geht davon aus, dass Phpunit weltweit in der Entwicklungsumgebung installiert ist.
Alle Tests sollten bestehen (mit Ausnahme eines übersprungenen, der aufgrund einiger Unsinn fehlerhaft und unfixierbar ist), daher sind wir bereit, mit dem Umbau zu beginnen.
Erste SchritteErstens müssen wir eine neue Zweigstelle erstellen, um dieses Upgrade zu entwickeln.
git checkout -b feature-httplugDann fügen wir zwei Abh?ngigkeiten in unsere Composer.json -Datei hinzu:
git clone https://github.com/swader/diffbot-php-client cd diffbot-php-client git checkout tags/0.4.5 composer install phpunit
Was dies tut, ist, dem Client zu sagen, dass es von nun an von einem virtuellen Paket - diesem eine abh?ngt. Dies bedeutet, dass die Anwendung mit unserem Diffbot -Client (wie dieser) eine Implementierung dieses Pakets ausw?hlen muss (eines der am Link auf Packagisten aufgeführten Paket). W?hrend der Entwicklung des Pakets w?re es natürlich unm?glich zu testen und zu prüfen, ob alles ohne tats?chliche Implementierung funktioniert. Daher geben wir eine zus?tzliche Abh?ngigkeit von Request-Dev an. Im obigen Fall verwenden wir "php-http/guzzle6-adapter": "~0.2@dev". Wir haben diese bestimmte Version ausgew?hlt, nur weil sie die neueste ist und es keine stabile Ver?ffentlichung gibt.
Hinweis: Sie fragen sich vielleicht, warum wir den Ansatz des Hinzufügens von Werten in Composer.json verwendet haben, anstatt Abh?ngigkeiten im Terminal interaktiv zu deklarieren, wie wir es normalerweise tun. Dies liegt daran, dass ein Komponist für ein virtuelles Paket einen Fehler macht - das Paket gibt es nicht wirklich, es ist nur sein virtueller Name, ein Platzhalter, sodass der Komponist verwirrt ist, ohne zu wissen, was zu installieren ist. Es gibt ein Problem, das eine ?nderung dazu hindert, aber es wird wahrscheinlich nicht bald geschehen.
Da die PHP-HTTP-Pakete immer noch unter starker Entwicklung stehen, sollten wir unseren Composer.json-Datei die folgenden zwei Werte hinzufügen:
git checkout -b feature-httplug
Dies soll die Installation von Entwicklerpaketen (nicht stabil) erm?glichen, bevorzugt jedoch stabile Versionen, wenn sie existieren. Anstatt beispielsweise Phpunit 5.2.x zu holen, wird es 5.0,8 (am aktuellsten zum Zeitpunkt des Schreibens) abrufen, aber es wird auch erfolgreich sein, wenn wir es nach Paketen fragen, die nicht haben stabile Ver?ffentlichungen (wie der Guzzle6-Adapter).
Wir müssen auch die Abh?ngigkeit von Guzzle5 entfernen, wenn wir beabsichtigen, Guzzle6 zu installieren. Die Finale erfordern Bl?cke wie folgt:
"require": { ... "php-http/client-implementation": "^1.0" }, "require-dev": { ... "php-http/guzzle6-adapter": "~0.2@dev" },
Der Plan
Die Art und Weise, wie das SDK derzeit funktioniert, lautet wie folgt: In der Hauptdiffbot -Klasse setzen wir optional einen HTTPClient. Dies ist derzeit an die Implementierung von Guzzle in Version 5 gebunden. Wenn keine benutzerdefinierte Client -Instanz festgelegt ist, verwendet die Diffbot -Klasse automatisch einen Standard -Client.
Dieser Client wird dann von der Anrufmethode des API Abstract verwendet, um eine GET -Anforderung an die angegebene URL auszustellen. Darüber hinaus gibt es in der Crawl -API -Klasse und der Such -API -Klasse eine benutzerdefinierte Anrufmethode.
Das Ergebnis des Anrufs wird als $ Antwort gespeichert, bei der es sich um eine Guzzle5 -Antwort handelt. Diese Antwort wird dann zus?tzlich von der Entit?tsfabrik verarbeitet, die ihre Gültigkeit überprüft und Entit?ten darstellt, wodurch sie in die Entit?t -Iterator drückt.
Der Plan ist also:
- Ersetzen Sie Diffbot :: Sethttpclient durch eine Methode, bei der eine HTTPLUG -Implementierung akzeptiert
- ?ndern Sie die Anrufmethoden der API -Abstract, CRABS und Suchklasse, damit sie eine GET -Anforderung mit jeder HTTP -Client -Implementierung ausstellen k?nnen, die ihnen zur Verfügung gestellt wird.
- ?ndern Sie die Entit?tsfabrik- und Entit?t-Iterator, so dass sie nicht mehr von der Guzzle5-Version der Antwort abh?ngen, sondern das PSR-7-Gegenstück.
Das PHP-HTTP-Projekt verfügt über ein zus?tzliches Paket, Utils, das httpMethodsclient enth?lt. Diese Klasse wickelt eine Nachrichtenfabrik und den HTTP-Client in ein Ganzes ein und erleichtert das Senden von Anfragen mit h?ufig verwendeten Verben wie GET, Post usw.-somit in etwas ?hnliches übersetzt, was wir bisher hatten: $ client-> get (. ..). Darüber hinaus gibt es auch das PSR-7-ResponseInterface zurück, was bedeutet, dass die Getbody-Methode uns zur Verfügung steht-das bleibt nur die Tojson-Methode unimplementiert, was wir leicht selbst tun k?nnen.
Darüber hinaus verfügt das Projekt über eine Erkennungskomponente, die einige statische Klassen zum Aufdecken installierter Fabriken und Clients enth?lt. Dadurch k?nnen wir unserem Endbenutzer in einigen F?llen eine Erfahrung mit einer Nullkonfiguration bieten (siehe DOCs).
Mit dem Schlachtplan k?nnen wir mit dem Refactoring beginnen.
Voraussetzungen
Erfordern wir die zus?tzlichen Pakete:
git clone https://github.com/swader/diffbot-php-client cd diffbot-php-client git checkout tags/0.4.5 composer install phpunit
Diffbot -Klasse
Die Diffbot -Klasse hat diese Zeile oben:
git checkout -b feature-httplug
wir k?nnen es einfach ?ndern in:
"require": { ... "php-http/client-implementation": "^1.0" }, "require-dev": { ... "php-http/guzzle6-adapter": "~0.2@dev" },
Die Sethttpclient -Methode sollte jetzt in der IDE aufflammen und sagen, dass einige erforderliche Parameter fehlen, n?mlich der Client zu verwenden, und die Nachrichtenfabrik, mit der Anforderungsinstanzen erstellt werden k?nnen.
Die Methode sollte in:
neu gestaltet werden"prefer-stable": true, "minimum-stability": "dev"
Alternativ k?nnen die Erkennungsklassen mit Verwendung von Anweisungen oben in der Klasse importiert werden.
Diese ?nderung hat dem Endbenutzer des Diffbot -SDK nun einen beiden erm?glicht:
- Lassen Sie ihren eigenen Client installieren und lassen Sie die Erkennungskomponenten zusammen mit httpMethodsclient automatisch um die Dinge kümmern, oder
- Konfigurieren Sie ihre eigene httpMethodsclient -Instanz, indem Sie eine benutzerdefinierte Instanz eines PSR 7 -Clients und einer Nachrichtenfabrik in eine neue Instanz davon injizieren und in die Sethttpclient -Methode für die volle Flexibilit?t injizieren injizieren
Die meisten Benutzer verwenden dies für Autopilot.
API Abstract, Crawl und Suche
Als n?chstes die Anrufmethoden.
Da die von uns zuvor implementierte HTTPMethodsClient -Instanz eine GET -Methode hat, sind diesbezüglich keine ?nderungen erforderlich. Die $ Response -Instanz zeigt jedoch eine MistMatch und aus gutem Grund. Die ursprüngliche $ -Antwort, die vom EntityFactory erwartet wird, ist eine Guzzle5 -Antwort.
Aufgrund der Beschwerde von EntityFactory müssen wir die API -Zusammenfassung nicht wirklich bearbeiten - sie wird sich selbst um die Dinge kümmern. Das Crawl -Class -Call -Gegenstück ist etwas anders:
git clone https://github.com/swader/diffbot-php-client cd diffbot-php-client git checkout tags/0.4.5 composer install phpunit
Zwei Warnungen hier - die zweite Zeile der Methode, die die JSON -Methode von $ response verwendet, und die EntityIterator -Instanziierung, die eine Guzzle5 -Antwort erwartet. Die einzige Linie, die wir von hier aus beeinflussen k?nnen, ist die erstere. Wechseln wir sie also in:
git checkout -b feature-httplug
Eine ?hnliche ?nderung muss in der Anrufmethode der Suchklasse durchgeführt werden, wobei die Zeile:
"require": { ... "php-http/client-implementation": "^1.0" }, "require-dev": { ... "php-http/guzzle6-adapter": "~0.2@dev" },
?ndert sich in:
"prefer-stable": true, "minimum-stability": "dev"
Entity Factory
Die EntityFactory -Klasse hat den folgenden Import oben:
"require": { "php" : ">=5.4.0", "php-http/client-implementation": "^1.0" }, "require-dev": { "symfony/var-dumper": "~2", "phpunit/phpunit": "^5.0", "php-http/guzzle6-adapter": "~0.2@dev" },
wir k?nnen dies ?ndern in:
composer require "php-http/utils" "php-http/discovery"
Das Gleiche muss in der EntityFactory -Schnittstelle erfolgen, die die Entit?tsfaktorik impliziert.
Die andere ?nderung ?hnelt dem, was wir oben in der Crawl -Klasse getan haben. Wir ?ndern:
use GuzzleHttp\Client;
bis
use Http\Client\Utils\HttpMethodsClient as Client;
in checkResponseformat- und CreateAppropotIderator -Methoden.
Entit?t Iterator
Wir ?ndern:
<span>/** </span><span> * Sets the client to be used for querying the API endpoints </span><span> * </span><span> * <span>@param Client $client </span></span><span> * <span>@see http://php-http.readthedocs.org/en/latest/utils/#httpmethodsclient </span></span><span> * <span>@return $this </span></span><span> */ </span><span>public function setHttpClient(Client $client = null) </span><span>{ </span> <span>if ($client === null) { </span> <span>$client = new Client( </span> <span><span>\Http\Discovery\HttpClientDiscovery</span>::find(), </span> <span><span>\Http\Discovery\MessageFactoryDiscovery</span>::find() </span> <span>); </span> <span>} </span> <span>$this->client = $client; </span> <span>return $this; </span><span>} </span>
bis
<span>public function call() </span><span>{ </span> <span>$response = $this->diffbot->getHttpClient()->get($this->buildUrl()); </span> <span>$array = $response->json(); </span> <span>if (isset($array['jobs'])) { </span> <span>$jobs = []; </span> <span>foreach ($array['jobs'] as $job) { </span> <span>$jobs[] = new JobCrawl($job); </span> <span>} </span> <span>return new EntityIterator($jobs, $response); </span> <span>} elseif (!isset($array['jobs']) && isset($array['response'])) { </span> <span>return $array['response']; </span> <span>} else { </span> <span>throw new DiffbotException('It appears something went wrong.'); </span> <span>} </span><span>} </span>
Tests
Verspottung, die Hauptmethode zum Testen von HTTP -Anforderungen und API -Aufrufen ist in Guzzle 6 unterschiedlich, daher erfordern unsere Tests eine etwas gr??ere überholung.
Da dieses Tutorial auf der langen Seite bereits ein wenig ist .
Schlie?lich führen wir die Tests durch:
$array = json_decode($response->getBody(), true);
Erfolg! Alle bestehen (mit Ausnahme des erwarteten übersprungenen Tests).
Der Diffbot SDK ist jetzt nicht nur PSR-7-kompatibel, sondern auch für andere Implementierungen von HTTP-Clients empf?nglich. Alles, was es braucht, ist ein Adapter, das die HTTPLUG -Schnittstelle respektiert, und alles sollte nicht über die Box gelangen.
Schlussfolgerung
httplug ist ein nützlicher neuer Ansatz zur Abstraxung der HTTP -Client -Implementierungen in den von uns erstellten Apps. Unabh?ngig davon
Wenn Sie helfen m?chten, indem Sie weitere Adapter -Implementierungen hinzufügen oder nur die Pakete ausprobieren und Feedback geben, begrü?t das Team alle Beitr?ge. Machen Sie sich mit uns in Verbindung oder lassen Sie Ihr Feedback im Kommentarbereich unten. Wenn Sie dieses Tutorial interessant fanden, vergessen Sie nicht, diese Taste wie Schaltfl?che zu klicken!h?ufig gestellte Fragen (FAQs) zu PHP HTTP und HTTPLUG
Was ist der Unterschied zwischen Guzzle5 und PHP HTTP/HTTPLUG? Guzzle5 ist ein spezifischer HTTP -Client, w?hrend PHP HTTP eine Abstraktionsschicht ist, mit der Sie einen HTTP -Client verwenden k?nnen. HTTPLUG ist eine Erweiterung von PHP HTTP, die zus?tzliche Funktionen bietet. Der Hauptunterschied besteht > Die Migration von Guzzle5 zu PHP HTTP/HTTPLUG beinhaltet den Ersatz des Guzzle5 -Clients durch einen Adapter, der die PHP -HTTP -Schnittstellen implementiert. Dies kann mit der HTTPLUG -Bibliothek erfolgen, die Adapter für verschiedene HTTP -Clients, einschlie?lich Guzzle5, bereitstellt. Sobald der Adapter eingerichtet ist, k?nnen Sie die PHP -HTTP -Methoden verwenden, um Anforderungen zu senden und Antworten zu behandeln. Die Verwendung von PHP HTTP/HTTPLUG über Guzzle5 ist die erh?hte Flexibilit?t und Interoperabilit?t. Mit PHP HTTP/HTTPLUG k?nnen Sie zwischen verschiedenen HTTP -Clients wechseln, ohne Ihren Code zu ?ndern. Dies erleichtert es, Ihre Anwendung mit verschiedenen Kunden zu testen und bei Bedarf die Kunden zu wechseln. Zus?tzlich bietet HTTPLUG ein Plugin -System, mit dem Sie Ihrem HTTP -Client Funktionen hinzufügen k?nnen. Abh?ngigkeitsmanagement -Tool für PHP. Sie k?nnen es installieren, indem Sie den Befehlskomponisten ausführen, der PHP-HTTP/HTTPLUG ben?tigt. Dadurch wird die HTTPLUG -Bibliothek und ihre Abh?ngigkeiten heruntergeladen. ein Anforderungsobjekt. Dies kann unter Verwendung der Createrequest -Methode der MessageFactory -Schnittstelle erfolgen. Sobald Sie ein Anforderungsobjekt haben, k?nnen Sie es mit der SendRequest -Methode der HTTPClient -Schnittstelle senden. dargestellt durch die ResponseInterface -Schnittstelle. Sie k?nnen auf den Statuscode, die Header und den K?rper der Reaktion mit dem GetStatuscode, Getheaders bzw. Getbody -Methoden zugreifen. ??> Die Erkennungskomponente in PHP HTTP/HTTPLUG wird verwendet, um verfügbare HTTP -Adapter und Nachrichtenfabriken automatisch zu finden und zu verwenden. Dies erleichtert es, zwischen verschiedenen HTTP -Clients zu wechseln und die beste verfügbare Implementierung zu verwenden. Aufrufen der statischen Fundmethode in den HTTPClientDiscovery- oder MessageFactoryDiscovery -Klassen. Dadurch wird eine Instanz des ersten verfügbaren HTTP -Clients oder Nachrichtenfabriks zurückgegeben.
Was sind die Plugins in httplug und wie verwende ich sie? Sie k?nnen verwendet werden, um Funktionen wie Authentifizierung, Caching und Fehlerbehandlung hinzuzufügen. Plugins k?nnen dem Client unter Verwendung der Adcdplugin -Methode der PluginClient -Klasse hinzugefügt werden. Implementieren Sie die HTTPClientException -Schnittstelle. Sie k?nnen diese Ausnahmen fangen und nach Bedarf umgehen. Darüber hinaus k?nnen Sie das Fehlerplugin verwenden, um nicht 200 Antworten in Ausnahmen zu konvertieren.
Das obige ist der detaillierte Inhalt vonFrei von Guzzle5 mit PHP-HTTP und HTTPLUG. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

TosecurelyHandleAuthenticationAuthorizationInphp, folge theSteps: 1.Alwayshashpasswordswithpassword_hash () und password_verify (), usePreeParedStatementStopreventsQlinjapitca und StoreuserDatain $ _SessionArtelogin.2.ImplementscaChescescesc

Um Datei -Uploads in PHP sicher zu verarbeiten, besteht der Kern darin, Dateitypen zu überprüfen, Dateien umzubenennen und die Berechtigungen zu beschr?nken. 1. Verwenden Sie Finfo_File (), um den realen MIME -Typ zu überprüfen, und nur bestimmte Typen wie Bild/JPEG sind zul?ssig. 2. Verwenden Sie Uniqid (), um zuf?llige Dateinamen zu generieren und sie im Root-Verzeichnis ohne Web zu speichern. 3.. Begrenzen Sie die Dateigr??e durch Php.ini- und HTML -Formulare und setzen Sie die Verzeichnisberechtigungen auf 0755; 4. Verwenden Sie Clamav, um Malware zu scannen, um die Sicherheit zu verbessern. Diese Schritte verhindern effektiv Sicherheitslücken und stellen sicher, dass der Upload -Prozess des Datei -Uploads sicher und zuverl?ssig ist.

In PHP ist der Hauptunterschied zwischen == und == die Strenge der Typprüfung. == Die Konvertierung des Typs wird vor dem Vergleich durchgeführt, beispielsweise 5 == "5" gibt true zurück und === fordert an, dass der Wert und der Typ gleich sind, bevor True zurückgegeben wird, z. B. 5 === "5" gibt false zurück. In den Nutzungsszenarien ist === sicherer und sollte zuerst verwendet werden, und == wird nur verwendet, wenn die Typumwandlung erforderlich ist.

Die Methoden zur Verwendung grundlegender mathematischer Operationen in PHP sind wie folgt: 1. Additionszeichen unterstützen Ganzfaktoren und Floating-Punkt-Zahlen und k?nnen auch für Variablen verwendet werden. String -Nummern werden automatisch konvertiert, aber nicht für Abh?ngigkeiten empfohlen. 2. Subtraktionszeichen verwenden - Zeichen, Variablen sind gleich, und die Typumwandlung ist ebenfalls anwendbar. 3. Multiplikationszeichen verwenden * Zeichen, die für Zahlen und ?hnliche Zeichenfolgen geeignet sind; 4. Division verwendet / Zeichen, die vermeiden müssen, durch Null zu dividieren, und beachten Sie, dass das Ergebnis m?glicherweise schwimmende Punktzahlen sein kann. 5. Die Modulzeichen k?nnen verwendet werden, um ungerade und sogar Zahlen zu beurteilen, und wenn negative Zahlen verarbeitet werden, stimmen die Restzeichen mit der Dividende überein. Der Schlüssel zur korrekten Verwendung dieser Operatoren liegt darin, sicherzustellen, dass die Datentypen klar sind und die Grenzsituation gut behandelt wird.

Ja, PHP kann mit NoSQL -Datenbanken wie MongoDB und Redis durch bestimmte Erweiterungen oder Bibliotheken interagieren. Verwenden Sie zun?chst den MongoDBPHP -Treiber (installiert über PECL oder Composer), um Client -Instanzen zu erstellen und Datenbanken und Sammlungen zu betreiben, wobei Sie Insertion, Abfrage, Aggregation und andere Vorg?nge unterstützen. Zweitens verwenden Sie die Predis Library oder PHPREDIS-Erweiterung, um eine Verbindung zu Redis herzustellen, Schlüsselwerteinstellungen und -akquisitionen durchzuführen und PHPREDIS für Hochleistungsszenarien zu empfehlen, w?hrend Predis für die schnelle Bereitstellung bequem ist. Beide sind für Produktionsumgebungen geeignet und gut dokumentiert.

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

PHPBECAMEPOPULARFORWebDevelopmentDuetoitSeaseoflearning, Seamlessintegrationwithhtml, weit verbreitete Hostingsupport, andalargeecosystemincludingFrameWorkelaravelandcmsplatformen -?hnliche WordPress.itexcelsinformlingsformen, Managingusesersions, Interacti

Tosettherighttimezoneinphp, usedate_default_timezone_set () functionAtthestartofyourScriptWithAvalididentifiersuchas'america/new_york'.1.usedate_default_timezone_set () beeanydate/timeFununtions.2.Alternativ, konfigurieren
