PHP и libphonenumber: преобразовать строку в объект PhoneNumber?

Итак, я передаю строку номера телефона в свой сервер PHP. Я пытаюсь использовать libphonenumber Google для проверки переданного номера телефона.

Вот строка: "+447400123456" ($val)

$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
$phoneNumber = new \libphonenumber\PhoneNumber().setNationalNumber($val);
error_log(json_encode($phoneNumber));
$internationalFormatPhoneNumber = $phoneUtil->format($phoneNumber, \libphonenumber\PhoneNumberFormat::INTERNATIONAL);
error_log(json_encode($internationalFormatPhoneNumber));

К сожалению, я продолжаю получать

"local.ERROR: исключение "Symfony\Component\Debug\Exception\FatalErrorException" с сообщением "Вызов неопределенной функции App\Http\Controllers\setNationalNumber()"

Все, что я хочу сделать, это проверить, является ли переданная строка действительным международным номером телефона (включая мобильные телефоны), прежде чем я сохраняю ее в своей базе данных.

Кто-нибудь может мне с этим помочь? Я борюсь с документацией и продолжаю получать ошибки.


person Eamorr    schedule 05.08.2015    source источник
comment
замените точку . на -> следующим образом: $phoneNumber = new \libphonenumber\PhoneNumber()->setNationalNumber($val);   -  person Matteo    schedule 05.08.2015
comment
. — это оператор конкатенации, поэтому вы вызываете ФУНКЦИЮ верхнего уровня с именем setNationalNumber(), а не метод объекта, возвращаемого PhoneNumber.   -  person Marc B    schedule 05.08.2015
comment
Я совершал одну и ту же ошибку тысячу раз. Иногда у вас бывают проблемы с мозгом, когда вы привыкли переключаться между двумя языками.   -  person dlporter98    schedule 05.08.2015
comment
Да вот в чем проблема... Пришлось вынести на две отдельные строки $phoneNumber = new \libphonenumber\PhoneNumber(); $phoneNumber->setNationalNumber($val); Спасибо за очень наблюдательную помощь!   -  person Eamorr    schedule 05.08.2015


Ответы (1)


Вы используете оператор точки . вместо правильного оператора объекта ->, поэтому вам просто нужно заменить .setNationalNumber($val) на ->setNationalNumber($val).

person honerlawd    schedule 05.08.2015