
Compartilhar:
Sou ator formado, com uma dissertação sobre stand-up comedy, e comecei a me dedicar ao desenvolvimento em PHP por meio dos encontros da comunidade. Você pode me encontrar dando palestras e escrevendo sobre tecnologia, ou ouvindo e comprando discos curiosos da minha coleção de vinil.
Anunciamos o lançamento do SDK do servidor PHP da Vonage, versão 3.0
Tempo de leitura: 4 minutos
Para os desenvolvedores que têm acompanhado o roteiro recente do Vonage PHP Server SDK, esta versão deve corresponder bastante às expectativas. Em nosso lançamento significativo, o ex-mantenedor Chris Tankersley explicou o objetivo de simplificar a biblioteca, e eu dei continuidade a esse trabalho.
Esta versão importante, no entanto, leva em consideração uma mudança na equipe e, consequentemente, na responsabilidade do SDK e, por isso, não remove todas as obsoleto. A chegada de novos membros a essas bibliotecas traz vários desafios, como compreender as abordagens adotadas anteriormente, bem como a necessidade de atender às necessidades de nossos desenvolvedores no que diz respeito à evolução do SDK. Alguns dos comportamentos “por trás dos bastidores” mais complexos foram mantidos como estão, com os avisos ainda presentes. Eles ainda serão removidos, mas em um momento posterior.
Principais alterações
Suporte a PHP
A partir desta versão, a biblioteca seguirá o ciclo de vida das versões da linguagem PHP. Assim, o PHP 8.1 agora é compatível, e o suporte às versões 7.2 e 7.3 foi descontinuado.
Estratégia de ramificação
Embora a maioria dos usuários finais não seja afetada por essa mudança, ela altera significativamente a forma como o repositório está estruturado para aqueles que desejam contribuir com essa biblioteca de código aberto. O novo fluxo de trabalho, projetado para estar em conformidade com outros SDKs do Vonage Server, é o seguinte:
mainramificação (renomeada a partir de ramificações de versão, como3.X/2.X)devfilialAs solicitações de pull são retiradas
maine mescladasdevcomo destinofusiona a partir de
devparamainsão consideradas mesclagens de lançamento e, portanto, resultarão em uma tag do Git que será enviada para o Packagist.
Remoção do acesso à matriz
A maior alteração no código da biblioteca é que quase todos os acessadores de array, que haviam sido marcados como obsoletos, foram removidos. Anteriormente, todas as entidades utilizavam a ArrayAccess interface para implementar várias funções essenciais do PHP, como offsetExists() e offsetSet($offset, value). Isso causava complexidade desnecessária, especialmente porque algumas entidades, na verdade, redirecionavam o valor para um request objeto.
Agora que eles foram removidos, você deve usar getters e setters em seu lugar. Por exemplo:
Anterior
$balance = new Vonage\Account\Balance('12.99', false);
$balanceValue = $balance['balance']Novo
$balance = new Vonage\Account\Balance('12.99', false);
$balanceValue = $balance->getBalance();
Se houver getters ou setters ausentes, você pode adicionar um código extra para tornar seu código compatível com versões anteriores — todas as entidades implementam a ArrayHydrateInterface. Isso significa que você ainda pode acessar objetos como matrizes convertidas para novas variáveis usando o toArray() e fromArray() . Por exemplo:
// 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']
Remoção de jsonSerialize e jsonUnserialize
Quase todas as entidades também utilizaram o jsonSerialize e jsonUnserialize . A maioria delas foi removida, já que a ideia original de poder personalizar quais estruturas de dados seriam serializadas e desserializadas não é mais necessária. Para desserializar um objeto, os ArrayHydrateInterface métodos.
Remoção de Call módulo
O Vonage\Call cliente já estava marcado para remoção, portanto isso já ocorreu. Essa funcionalidade foi substituída pelo Vonage\Voice cliente e suas entidades associadas, cuja utilização já está documentada com exemplos no arquivo “Leia-me”.
Aqui está um “exemplo de antes e depois” de como usá-lo:
// 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);
Remoção de User módulo
A biblioteca possuía, originalmente, uma implementação incompleta de um recurso que se encontrava na fase beta do ciclo de lançamento. Esse recurso foi descontinuado e, portanto, a biblioteca deixou de oferecer suporte a ele. Não há nenhuma funcionalidade alternativa para substituí-lo caso tenha sido utilizado, mas, como era incompleto e estava marcado para remoção, não deve haver nenhum impacto no uso do SDK.
Pequenas alterações
Essas são alterações que ocorrem “nos bastidores”, por trás da camada de serviço da biblioteca, que foi projetada para ser voltada aos desenvolvedores. Por uma questão de transparência, vou documentar algumas dessas alterações.
Exclusão de provas incompletas e não realizadas
Vários testes foram marcados como incompletos ou ignorados, com justificativas específicas. Considerando a mudança de mantenedor e a perda de parte do contexto histórico e do conhecimento específico da área à medida que o código muda de mãos, tomei a decisão de limpar o código excluindo-os. Há duas justificativas para isso:
O código que está sendo testado pode ter mudado de contexto ou de estado, ou seja, um recurso que agora se comporta de maneira diferente em nossas APIs.
Temos como meta aumentar a cobertura de código para quase 100% este ano e, por isso, nada ficará de fora do que esses testes se propuseram a cobrir.
Suporte ao PSR/Container 2.0
Para frameworks PHP modernos com atualizações contínuas, como o Laravel e o Symfony, foi adicionado o suporte à PSR-11 para a versão 2.0 do contêiner de serviços, sem nenhum impacto.
Basic::getCountryPrefix() valor de retorno
Anteriormente, esse método retornava um número inteiro. Esse valor é armazenado como uma string proveniente da resposta da API utilizada para preenchê-lo e pode conter caracteres especiais. Por esse motivo, ele foi alterado para retornar uma string.
Alterações no KeyPair
O Vonage\Client\Credentials\Keypair() objeto possui um novo método, getKey(), para obter o key. Isso foi adicionado para dar suporte a alguns testes adicionais da funcionalidade do JWT.
psr/log apoio
Da mesma forma que a atualização da versão de suporte para o contêiner, psr/log a versão 2.0 agora é suportada.
Variação em Application\Client comportamento
Ao criar um Application\Client, existe um shim para compatibilidade com versões anteriores que permite que o objeto seja criado sem um objeto implementável HydratorInterface . Esse shim foi removido.
Obrigado pelo seu apoio!
Meus agradecimentos a Daniel Miedzik, usuário do GitHub iceleo-com, e a Fabien Salathe pelas contribuições para esta versão. Haverá mudanças perceptíveis, algumas das quais já começamos a implementar, no que diz respeito à manutenção desta biblioteca, como manter a lista de issues documentada com rotulagem adequada e agilizar os tempos de resposta. Nosso objetivo é também passar a fazer lançamentos mais regulares, em linha com uma abordagem mais voltada para a “CI”.
Quando tivermos removido as últimas funcionalidades marcadas como obsoletas em uma versão futura, tomaremos medidas para simplificar ainda mais a biblioteca, a fim de incentivar contribuições de fora da Vonage. Afinal, nossas bibliotecas são de código aberto!
Compartilhar:
Sou ator formado, com uma dissertação sobre stand-up comedy, e comecei a me dedicar ao desenvolvimento em PHP por meio dos encontros da comunidade. Você pode me encontrar dando palestras e escrevendo sobre tecnologia, ou ouvindo e comprando discos curiosos da minha coleção de vinil.