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

Vonage PHP Server SDK バージョン 3.0 リリースのお知らせ

最終更新日 January 26, 2022

所要時間:1 分

最近のロードマップに従っている開発者のために Vonage PHP サーバ SDKのロードマップを追っている開発者にとっては、今回のリリースは期待通りのものになるはずです。前回の 重要なリリース前メンテナ クリス・タンカースリーがライブラリーをシンプルにするという目標について説明し、私はその作業を続けてきた。

しかし、このメジャー・リリースでは、以下のことが考慮されている。 を考慮したものであり、SDKSDKの所有者が変更されたことを考慮したものであり すべてのを削除するものではありません。SDKの進化に関しては、開発者のニーズを満たす必要があるだけでなく、以前に取られたアプローチを理解する必要があるなど、これらのライブラリに新たに参加することは様々な課題をもたらします。より複雑な "アンダー・ザ・フード "の動作の一部は、そのまま残されています。これらは後日削除される予定です。

主な変更点

PHPサポート

このリリース以降、ライブラリは PHP 言語リリースのライフサイクル.そのため、PHP8.1 がサポートされ、バージョン 7.2 および 7.3 のサポートは終了しました。

分岐戦略

エンドユーザーの大半はこの変更の影響を受けないだろうが、このオープンソースライブラリに貢献したい人にとっては、リポジトリの構造が大きく変わることになる。新しいワークフローは 他のVonage Server SDKs以下のようになります:

  • mainブランチ(以下のようなバージョンブランチから改名された 3.X/2.X)

  • devブランチ

  • プルリクエストは mainにマージされる。 devにマージされます。

  • から devから mainへのマージはリリースマージとみなされ、Packagist にプッシュする git タグが作成されます。

アレイ・アクセスの削除

ライブラリーの最大のコード変更点は、非推奨とされていた配列アクセサがほとんどすべて削除されたことだ。以前は、すべての実体が ArrayAccessインターフェイスを使用していました。 offsetExists()そして offsetSet($offset, value).などのさまざまな PHP のコア関数を実装するためにインターフェイスを使用していました。 これらは不要な複雑さを引き起こし、特に一部のエンティティでは実際に値を requestオブジェクトに値をプロキシしていました。

現在では、これらは削除され、代わりにゲッターとセッターを使用する。例えば

前へ

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

新しい

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

ゲッターやセッターが足りない場合は、コードを追加して後方互換性を持たせることができます。 ArrayHydrateInterface.つまり、新しい変数にキャストされた配列としてオブジェクトにアクセスするには toArray()そして fromArray()メソッドを使って新しい変数にキャストすることができます。例えば

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

撤去jsonSerializeそしてjsonUnserialize

また、ほぼすべての事業体が jsonSerializejsonUnserializeインターフェースも使っていた。これらのほとんどは削除された。どのデータ構造がシリアライズされ、どのデータ構造がアンシリアライズされるかをカスタマイズできるようにしようという当初の考え方は不要になったからだ。オブジェクトをアンシリアライズするには ArrayHydrateInterfaceメソッドが代わりに使われます。

撤去Callモジュール

その Vonage\Callクライアントはすでに削除するようにマークされていたので、これで削除されました。この機能は Vonage\Voiceクライアントとその関連エンティティに置き換えられました。

使用前と使用後の例」を紹介しよう:

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

撤去Userモジュール

このライブラリはもともと、リリースサイクルのベータ段階にあった機能の実装が不完全でした。この機能は現在削除されたため、ライブラリはこの機能のサポートを終了しました。この機能を使用していた場合、代替となる機能はありませんが、不完全であり、削除するようマークされていたため、SDKを使用する上で影響はないはずです。

マイナーチェンジ

これらは、開発者向けに設計されたライブラリーのサービス・レイヤーの背後にある、非常に「フードの下」にある変更である。透明性を確保するために、これらの変更点のいくつかを記録しておこうと思う。

不完全でスキップされたテストの削除

多くのテストが、与えられた理由とともに、未完成またはスキップとしてマークされた。メンテナが変わり、歴史的な背景やドメインに関する知識が失われたため、私はこれらのテストを削除してコードを整理することにした。これには2つの理由がある:

  1. テストされるコードは、コンテキストや状態が変わったかもしれない。

  2. 私たちは今年、コード・カバレッジを100%近くまで高めることを目標としており、そのため、これらのテストがカバーしようとしている可能性のあるものは何も残さない。

PSR/コンテナ2.0対応

Laravel や Symfony のような、継続的にリリースされている最新の PHP フレームワークについては、サービスコンテナの v2.0 に対する PSR-11 のサポートが追加されました。

Basic::getCountryPrefix()戻り値

以前はこのメソッドは整数を返していた。この値は、APIレスポンスに入力された文字列として保存され、特殊文字を含む可能性があります。そのため、文字列を返すように変更されました。

キーペアの変更

この Vonage\Client\Credentials\Keypair()オブジェクトには新しいメソッドがある、 getKey()メソッドを持っている。 key.これは、JWT機能の追加テストをサポートするために追加されました。

psr/logサポート

コンテナのサポートバージョンアップと同様、 psr/logv.2.0がサポートされた。

増減Application\Client振る舞い

を作成する場合、後方互換性のためにシムが存在する。 Application\Clientオブジェクトを作成するとき、後方互換性のためにシムが存在する。 HydratorInterfaceオブジェクトを作成することができます。このシムは現在削除されている。

応援ありがとう!

Daniel Miedzik、Githubユーザー iceleo-comおよびFabien Salatheに感謝する。このライブラリのメンテナンスに関しては、問題リストを適切なラベル付けで文書化し、レスポンスタイムを速めるなど、顕著な変更があります。私たちの目標は、より「CI」的なアプローチに沿って、より定期的なリリースに移行することです。

将来のリリースで最終的な非推奨事項が削除されたら、Vonageの外部からの貢献を奨励するために、ライブラリをさらに簡素化する措置を取るつもりです。結局のところ、私たちのライブラリはオープンソースです!

シェア:

https://a.storyblok.com/f/270183/400x385/12b3020c69/james-seconde.png
James SecondeシニアPHPデベロッパー

スタンダップ・コメディーの学位論文を持つ俳優の訓練を受け、ミートアップ・シーンを経てPHP開発に携わるようになった。技術について話したり書いたり、レコード・コレクションから変わったレコードを再生したり買ったりしています。