
Teilen Sie:
Als ausgebildeter Schauspieler mit einer Dissertation in Standup-Comedy bin ich über die Meetup-Szene zur PHP-Entwicklung gekommen. Man findet mich, wenn ich über Technik spreche oder schreibe, oder wenn ich seltsame Platten aus meiner Vinylsammlung spiele oder kaufe.
Ankündigung des Vonage PHP Server SDK Version 3.0
Lesedauer: 4 Minuten
Für Entwickler, die die aktuelle Roadmap des Vonage PHP Server SDKverfolgt haben, sollte diese Version so aussehen wie erwartet. In unserem letzten wichtigen Veröffentlichunghat der ehemalige Maintainer Chris Tankersley das Ziel der Vereinfachung der Bibliothek erläutert, und ich habe diese Arbeit fortgesetzt.
Diese Hauptversion berücksichtigt jedoch einen Wechsel des Teams und damit der Eigentümer des SDKs und entfernt daher nicht alle Verwerfungen. Der Neueinstieg in diese Bibliotheken bringt verschiedene Herausforderungen mit sich, wie z. B. das Verständnis früherer Ansätze und die Notwendigkeit, die Bedürfnisse unserer Entwickler im Hinblick auf die Weiterentwicklung des SDK zu erfüllen. Einige der komplexeren Verhaltensweisen unter der Haube" wurden unverändert belassen, wobei die Hinweise weiterhin vorhanden sind. Diese werden noch entfernt, aber zu einem späteren Zeitpunkt.
Wichtige Änderungen
PHP-Unterstützung
Von dieser Version an wird die Bibliothek den Lebenszyklus der PHP-Sprachversion. So wird nun PHP8.1 unterstützt, und die Unterstützung für die Versionen 7.2 und 7.3 wurde eingestellt.
Strategie der Verzweigung
Obwohl die Mehrheit der Endnutzer von dieser Änderung nicht betroffen sein wird, ändert sich die Struktur des Repositorys für diejenigen, die zu dieser Open-Source-Bibliothek beitragen möchten, erheblich. Der neue Arbeitsablauf, der im Einklang mit den anderen Vonage Server SDKssieht wie folgt aus:
mainZweig (umbenannt von Versionszweigen wie3.X/2.X)devZweigstellePull Requests werden von
mainentfernt und indevals das Zielverschmilzt von
devnachmainwerden als Release-Merge betrachtet und führen daher zu einem Git-Tag, der zu Packagist gepusht wird.
Aufhebung des Array-Zugriffs
Die größte Code-Änderung in der Bibliothek ist, dass fast alle Array-Accessors, die als veraltet gekennzeichnet waren, jetzt entfernt wurden. Zuvor verwendeten alle Entitäten das ArrayAccess Schnittstelle zur Implementierung verschiedener PHP-Kernfunktionen wie offsetExists() und offsetSet($offset, value). Dies führte zu unnötiger Komplexität, insbesondere da einige Entitäten den Wert in ein request Objekt.
Da diese nun entfernt wurden, verwenden Sie stattdessen Getter und Setter. Zum Beispiel:
Vorherige
$balance = new Vonage\Account\Balance('12.99', false);
$balanceValue = $balance['balance']Neu
$balance = new Vonage\Account\Balance('12.99', false);
$balanceValue = $balance->getBalance();
Wenn Getter oder Setter fehlen, können Sie etwas zusätzlichen Code hinzufügen, um Ihren Code abwärtskompatibel zu machen - alle Entitäten implementieren die ArrayHydrateInterface. Das bedeutet, dass Sie weiterhin auf Objekte als Arrays zugreifen können, die in neue Variablen gecastet werden, indem Sie die toArray() und fromArray() Methoden. Zum Beispiel:
// this will error
$balance = new Vonage\Account\Balance('12.99', false);
$balanceValue = $balance['balance']
// this will fix it
$balance = new Vonage\Account\Balance('12.99', false);
$balanceArray = $balance->toArray();
$balanceValue = $balanceArray['balance']
Entfernung vonjsonSerialize undjsonUnserialize
Fast alle Unternehmen verwendeten auch die jsonSerialize und jsonUnserialize Schnittstellen. Die meisten dieser Schnittstellen wurden entfernt, da der ursprüngliche Gedanke, die Datenstrukturen, die serialisiert und desialisiert werden, individuell anpassen zu können, nicht erforderlich ist. Um ein Objekt zu deserialisieren, werden stattdessen die ArrayHydrateInterface Methoden stattdessen verwendet.
Entfernung vonCall Modul
Der Vonage\Call Client war bereits zur Entfernung markiert, so dass dies nun geschehen ist. Diese Funktionalität wurde ersetzt durch den Vonage\Voice Client und seine zugehörigen Entitäten ersetzt, deren Verwendung bereits mit Beispielen in der Readme dokumentiert ist.
Hier ist ein "Vorher-Nachher-Beispiel" für die Anwendung:
// old
$call = new Vonage\Call\Call();
$call->setTo('14843331234')
->setFrom('14843335555')
->setWebhook(Vonage\Call\Call::WEBHOOK_ANSWER, 'https://example.com/answer')
->setWebhook(Vonage\Call\Call::WEBHOOK_EVENT, 'https://example.com/event');
$client->call()->create($call);
// new
$outboundCall = new \Vonage\Voice\OutboundCall(
new \Vonage\Voice\Endpoint\Phone('14843331234'),
new \Vonage\Voice\Endpoint\Phone('14843335555')
);
$outboundCall
->setAnswerWebhook(
new \Vonage\Voice\Webhook('https://example.com/answer')
)
->setEventWebhook(
new \Vonage\Voice\Webhook('https://example.com/event')
)
;
$response = $client->voice()->createOutboundCall($outboundCall);
Entfernung vonUser Modul
Die Bibliothek hatte ursprünglich eine unvollständige Implementierung einer Funktion, die sich in der Betaphase des Veröffentlichungszyklus befand. Diese Funktion wurde nun fallen gelassen, und daher hat die Bibliothek die Unterstützung für sie eingestellt. Es gibt keine alternative Funktionalität, um diese zu ersetzen, wenn sie verwendet wurde, aber da sie unvollständig und zur Entfernung markiert war, sollte es keine Auswirkungen auf die Verwendung des SDK haben.
Geringfügige Änderungen
Es handelt sich dabei um Änderungen, die sehr stark "unter der Haube" liegen, hinter der Dienstschicht der Bibliothek, die für die Entwickler gedacht ist. Aus Gründen der Transparenz werde ich ein paar dieser Änderungen dokumentieren.
Entfernung von unvollständigen und übersprungenen Tests
Eine Reihe von Tests wurde als unvollständig oder übersprungen markiert, wobei die Gründe dafür angegeben wurden. In Anbetracht des Wechsels des Betreuers und einiger historischer Zusammenhänge/Domänenkenntnisse, die verloren gehen, wenn der Code den Besitzer wechselt, habe ich die Entscheidung getroffen, den Code zu bereinigen, indem ich sie lösche. Dafür gibt es zwei Begründungen:
Der getestete Code könnte den Kontext oder den Zustand geändert haben, d.h. eine Funktion, die sich in unseren APIs jetzt anders verhält.
Wir haben uns zum Ziel gesetzt, die Codeabdeckung in diesem Jahr auf nahezu 100 % zu erhöhen, so dass nichts ausgelassen wird, was diese Tests abdecken könnten.
PSR/Container 2.0-Unterstützung
Für laufend veröffentlichte, moderne PHP-Frameworks wie Laravel und Symfony wurde die PSR-11-Unterstützung für v2.0 des Service-Containers ohne Auswirkungen hinzugefügt.
Basic::getCountryPrefix() Rückgabewert
Zuvor gab diese Methode eine ganze Zahl zurück. Dieser Wert wird als String aus der API-Antwort gespeichert und könnte möglicherweise Sonderzeichen enthalten. Daher wurde die Methode so geändert, dass sie eine Zeichenkette zurückgibt.
KeyPair-Änderungen
Das Vonage\Client\Credentials\Keypair() Objekt hat eine neue Methode, getKey(), um die key. Dies wurde hinzugefügt, um einige zusätzliche Tests der JWT-Funktionalität zu unterstützen.
psr/log Unterstützung
Ähnlich wie beim Versionssprung für den Container, psr/log v.2.0 wird nun unterstützt.
Veränderung inApplication\Client Verhalten
Bei der Erstellung eines Application\ClientObjekts gibt es aus Gründen der Abwärtskompatibilität ein Shim, das die Erstellung des Objekts ohne ein implementierbares HydratorInterface Objekt. Dieses Shim wurde nun entfernt.
Vielen Dank für Ihre Unterstützung!
Mein Dank geht an Daniel Miedzik, Github-Benutzer iceleo-comund Fabien Salathe für ihre Beiträge zu dieser Version. Es wird spürbare Änderungen geben, von denen wir einige bereits umgesetzt haben, was die Wartung dieser Bibliothek betrifft, wie z.B. die Dokumentation der Fehlerliste mit entsprechender Kennzeichnung und die Beschleunigung der Reaktionszeiten. Unser Ziel ist es auch, zu regelmäßigeren Veröffentlichungen überzugehen, im Einklang mit einem mehr "CI"-Ansatz.
Wenn wir die letzten markierten Verwerfungen in einer zukünftigen Version entfernt haben, werden wir Schritte unternehmen, um die Bibliothek weiter zu vereinfachen und Beiträge von außerhalb von Vonage zu fördern. Schließlich sind unsere Bibliotheken Open Source!
Teilen Sie:
Als ausgebildeter Schauspieler mit einer Dissertation in Standup-Comedy bin ich über die Meetup-Szene zur PHP-Entwicklung gekommen. Man findet mich, wenn ich über Technik spreche oder schreibe, oder wenn ich seltsame Platten aus meiner Vinylsammlung spiele oder kaufe.