Facilmente validando e manipulando números de celulares Moçambicanos. Suporte para TMcel, Vodacom, e Movitel
Execute na raiz do seu projeto (assumindo que tenhas instalado o Composer) o seguinte comando:
composer require samuelbie/mzmsisdn
A maneira mais básica é executando o método estático validate
da classe Msisdn
, passando como parâmetro o número de celular.
$mobileNumber = '823847698';
if (Msisdn::validate($mobileNumber)) {
echo 'Valid mobile number';
} else {
echo 'Invalid mobile number';
}
O método validate
compila ou sanitiza o número dado como entrada e realiza a validação, garantindo que mesmo que o usuário tenha introduzido carateres de separação no meio da string o método retorne verdadeiro caso seja realmente válido:
$validMobileNumber = '+258823847556';
$validMobileNumber = '+258-82-38-47-556';
$validMobileNumber = '847386187';
$validMobileNumber = '84.738.6187';
$validMobileNumber = '258 82 38 47 556 ';
De outro jeito podemos também criar uma instância da classe MSISDN e o contacto é padronizado ao formato Moçambicano.
$mobileNumber = '823847556';
$msisdn = new Msisdn($mobileNumber);
O objecto MSISDN irá lançar uma InvalidMsisdnException
caso o construtor não seja alimentado com um número válido. Nesse contexto é uma boa ideia tratar a excepção ou validar o número antes de construir o objecto.
$invalidMobileNumber = '82-38-47-55';
try {
$msisdn = new Msisdn($invalidMobileNumber);
} catch (InvalidMsisdnException $e) {
echo 'The number is invalid';
return;
}
OR
$invalidMobileNumber = '82-38-47-55';
if (Msisdn::validate($invalidMobileNumber)) {
$msisdn = new Msisdn($invalidMobileNumber);
} else {
echo 'Invalid mobile number';
return;
}
Ao instanciar um objecto Msisdn
, poderá retornar vários formatos de números de celular, dependendo naturalmente do que será mais útil para o seu contexto.
$mobileNumber = '823847556';
$msisdn = new Msisdn($mobileNumber);
echo $msisdn->get(); // will return 258823847556
echo $msisdn->getFormatted(); // will return "+258 823 847 556"
echo $msisdn->getFullNumber(); // will return +258823847556
Pode ser que lhe convenha realizar algumas funções baseadas na operadora raiz do contacto.
Nesta área assumisse que:
- 82 ou 83 são prefixos da TMcel
- 84 ou 85 são prefixos da Vodacom
- 86 ou 87 são prefixos da Movitel
$mobileNumber = '823847555';
$msisdn = new Msisdn($mobileNumber);
echo $msisdn->getOperator(); // will return TMCEL
Assuma por exemplo que queiras saber se o contacto é de uma determinada operadora.
$mobileNumber = '823847555';
$msisdn = new Msisdn($mobileNumber);
echo $msisdn->isVodacom(); // will return false
echo $msisdn->isTmcel(); // will return true
echo $msisdn->isMovitel(); // will return false
$mobileNumber = '847386728';
$msisdn = new Msisdn($mobileNumber);
echo $msisdn->isVodacom(); // will return true
echo $msisdn->isTmcel(); // will return false
echo $msisdn->isMovitel(); // will return false
De igual forma você pode coletar o prefixo da operadora apenas.
$mobileNumber = '823847556';
$msisdn = new Msisdn($mobileNumber);
echo $msisdn->getPrefix(); // will return 82
Este pacote já traz consigo a integração com as validações laravel, onde poderá facilmente efetuar validações aos seus HTTP requests
.
"msisdn" // This validates mozambican mobile number
"msisdn_vodacom" // This just vodacom mobile number
"msisdn_movitel" // This just movitel mobile number
"msisdn_tmcel" // This just tmcel mobile number
Example
$validated = $request->validate([
'telefone' => 'bail|required|msisdn',
'contacto_vodacom' => 'bail|required|msisdn_vodacom',
'contacto_movitel' => 'bail|required|msisdn_movitel',
'contacto_tmcel' => 'bail|required|msisdn_tmcel',
]);
The MIT License (MIT). Please see License File for more information.