https://d226lax1qjow5r.cloudfront.net/blog/blogposts/announcing-the-vonage-php-server-sdk-version-3-0-release/php_sdk-updates.png

Annonce de la version 3.0 du SDK PHP Server de Vonage

Publié le January 26, 2022

Temps de lecture : 5 minutes

Pour les développeurs qui ont suivi la récente feuille de route du SDK PHP de Vonagede Vonage, cette version devrait ressembler à ce que l'on attendait. Dans notre précédente version importantel'ancien mainteneur Chris Tankersley avait expliqué l'objectif de simplification de la bibliothèque, et j'ai poursuivi ce travail.

Cette version majeure prend toutefois en compte un changement d'équipe et donc de propriétaire. changement d'équipe et donc de propriétaire du SDK et ne supprime donc pas toutes les dépréciation. L'arrivée d'une nouvelle version de ces bibliothèques pose divers défis, tels que la compréhension des approches adoptées précédemment et la nécessité de répondre aux besoins de nos développeurs en ce qui concerne l'évolution du SDK. Certains des comportements les plus complexes "sous le capot" ont été laissés tels quels, avec les avis toujours présents. Ceux-ci seront supprimés ultérieurement.

Changements majeurs

Support PHP

À partir de cette version, la bibliothèque suivra le cycle de vie des versions du langage PHP. cycle de vie des versions du langage PHP. Ainsi, PHP8.1 est désormais supporté, et le support des versions 7.2 et 7.3 a été abandonné.

Stratégie de ramification

Bien que la majorité des utilisateurs finaux ne soient pas affectés par ce changement, il modifie de manière significative la structure du dépôt pour ceux qui souhaitent contribuer à cette bibliothèque open-source. Le nouveau flux de travail, conçu pour s'aligner sur les autres SDK de Vonage Serverde Vonage Server, ressemble à ce qui suit :

  • main (renommée à partir des branches de version telles que 3.X/2.X)

  • dev branche

  • Les pull requests sont retirées mainet sont fusionnées avec dev en tant que cible

  • fusionne de dev à main sont considérés comme des release merges, et résulteront donc en un git tag qui sera poussé vers Packagist.

Suppression de l'accès au réseau

Le plus grand changement dans le code de la bibliothèque est que presque tous les accesseurs de tableaux, qui étaient marqués comme dépréciés, ont maintenant été supprimés. Auparavant, toutes les entités utilisaient l'interface ArrayAccess pour implémenter diverses fonctions essentielles de PHP, comme offsetExists() et offsetSet($offset, value). Ces fonctions étaient inutilement complexes, d'autant plus que certaines entités transformaient la valeur en un objet request dans un objet.

Maintenant qu'ils ont été supprimés, vous utilisez des getters et des setters à la place. Par exemple :

Précédent

$balance = new Vonage\Account\Balance('12.99', false);
$balanceValue = $balance['balance']

Nouveau

$balance = new Vonage\Account\Balance('12.99', false);
$balanceValue = $balance->getBalance();

S'il manque des getters ou des setters, vous pouvez ajouter du code supplémentaire pour rendre votre code rétrocompatible - toutes les entités implémentent la méthode ArrayHydrateInterface. Cela signifie que vous pouvez toujours accéder à des objets sous forme de tableaux convertis en nouvelles variables en utilisant les méthodes toArray() et fromArray() pour accéder à de nouvelles variables. Par exemple :

// 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']

Suppression dejsonSerialize etjsonUnserialize

La quasi-totalité des entités ont également utilisé les codes jsonSerialize et jsonUnserialize . La plupart d'entre elles ont été supprimées. La plupart d'entre elles ont été supprimées, car l'idée initiale de pouvoir personnaliser les structures de données sérialisées et non sérialisées n'est pas nécessaire. Pour désérialiser un objet, les méthodes ArrayHydrateInterface sont utilisées à la place.

Suppression deCall module

Le client Vonage\Call était déjà marqué pour être supprimé, ce qui s'est donc produit. Cette fonctionnalité a été remplacée par le Vonage\Voice et ses entités associées, dont l'utilisation est déjà documentée par des exemples dans le Readme.

Voici un exemple "avant et après" de son utilisation :

// 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);

Suppression deUser module

La bibliothèque avait à l'origine une implémentation incomplète d'une fonctionnalité qui était dans la phase bêta du cycle de publication. Cette fonctionnalité a été abandonnée et, par conséquent, la bibliothèque n'en assure plus le support. Il n'y a pas d'autre fonctionnalité pour la remplacer si elle a été utilisée, mais comme elle était incomplète et marquée pour être supprimée, il ne devrait pas y avoir d'impact en termes d'utilisation du SDK.

Changements mineurs

Il s'agit de changements qui sont en grande partie "sous le capot", derrière la couche de service de la bibliothèque qui est conçue pour être orientée vers les développeurs. Par souci de transparence, je vais documenter quelques-uns de ces changements.

Suppression des tests incomplets et ignorés

Un certain nombre de tests ont été marqués comme incomplets ou ignorés, avec des raisons données. Compte tenu du changement de mainteneur et de la perte de contexte historique et de connaissance du domaine lorsque le code change de mains, j'ai pris la décision de nettoyer le code en les supprimant. Il y a deux justifications à cela :

  1. Le code testé peut avoir changé de contexte ou d'état, c'est-à-dire qu'une fonctionnalité se comporte désormais différemment dans nos API.

  2. Nous avons pour objectif d'augmenter la couverture du code à près de 100 % cette année et, par conséquent, rien ne sera oublié que ces tests auraient pu couvrir.

Prise en charge de PSR/Container 2.0

Pour les frameworks PHP modernes, tels que Laravel et Symfony, le support PSR-11 pour la version 2.0 du conteneur de service a été ajouté sans impact.

Basic::getCountryPrefix() valeur de retour

Auparavant, cette méthode renvoyait un nombre entier. Cette valeur est stockée sous forme de chaîne de caractères à partir de la réponse de l'API utilisée pour la remplir, et peut éventuellement contenir des caractères spéciaux. C'est pourquoi cette méthode a été modifiée pour renvoyer une chaîne de caractères.

Changements dans les paires de clés

L'objet Vonage\Client\Credentials\Keypair() dispose d'une nouvelle méthode, getKey()pour obtenir le key. Cette méthode a été ajoutée pour permettre des tests supplémentaires de la fonctionnalité JWT.

psr/log soutien

Similaire au changement de version pour le conteneur, psr/log v.2.0 est désormais pris en charge.

Changements dans lesApplication\Client comportement

Lors de la création d'un objet Application\Clientil existe une cale pour la compatibilité ascendante qui permet à l'objet d'être créé sans objet implémentable. HydratorInterface implémentable. Cette cale a été supprimée.

Merci pour votre soutien !

Mes remerciements vont à Daniel Miedzik, utilisateur Github iceleo-comet Fabien Salathe pour leurs contributions à cette version. Il y aura des changements notables, dont certains que nous avons déjà commencé à mettre en œuvre, en ce qui concerne la maintenance de cette bibliothèque, comme le fait de garder la liste des problèmes documentée avec un étiquetage approprié et d'accélérer les temps de réponse. Notre objectif est également de passer à des versions plus régulières, en accord avec une approche plus "CI".

Lorsque nous aurons supprimé les dernières dépréciations marquées dans une prochaine version, nous prendrons des mesures pour simplifier davantage la bibliothèque afin d'encourager les contributions extérieures à Vonage. Après tout, nos bibliothèques sont Open Source !

Partager:

https://a.storyblok.com/f/270183/400x385/12b3020c69/james-seconde.png
James SecondeDéveloppeur PHP senior Advocate

Acteur de formation avec une thèse sur la comédie, je suis venu au développement PHP par le biais de la scène des rencontres. Vous pouvez me trouver en train de parler et d'écrire sur la technologie, ou de jouer/acheter des disques bizarres de ma collection de vinyles.