由于一些限制,我无法通过composer安装libphonenumber,因此我手动将其添加到项目的lib目录中。
当我尝试通过手动设置使用时,我收到以下错误:
PHP致命错误:第404行的/home/cellulant/CODE/MSISDNVALIDATIONAPI/lib/libphonenumber/src/PhoneNumberUtil.php中找不到类'libphonenumber \ CountryCodeToRegionCodeMap
尽管可以在 libphonenumber / src 目录中找到CountryCodeToRegionMap.php
libphonenumber 目录位于我项目的 lib 目录中。 以下是我的目录结构
├── docs
├── index.php
├── lib
│ └── libphonenumber
│ ├── composer.json
│ ├── docs
│ │ ...
│ ├── LICENSE
│ ├── METADATA-VERSION.txt
│ ├── README.md
│ └── src
│ ...
在我的index.php中,我有这些:
<?php
include "lib/libphonenumber/src/PhoneNumberUtil.php";
$num = "0234567787";
try
{
$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
$numberProto = $phoneUtil->parse($num, "US");
var_dump($numberProto);
}
catch (Exception $ex)
{
echo "Exception: " . $ex->getMessage() . "\n";
}
答案 0 :(得分:1)
据我所知,你有3种选择:
手动要求/包含所有需要的课程。您已经包含了#34; PhoneNumberUtil.php&#34;,但您还应该包含&#34; CountryCodeToRegionCodeMap.php&#34;
在php中实现自己的自动加载器: http://php.net/manual/en/language.oop5.autoload.php
使用composer自动加载器。如果您没有shell访问权限,则可以在本地运行命令并将所有内容ftp到您的webhost
答案 1 :(得分:1)
根据libphonenumber-php文档,如果你决定在没有作曲家的情况下使用它,你也可以使用任何PSR4(http://www.php-fig.org/psr/psr-4/)兼容的自动加载器。
此版本的作者@giggsey表示您可能需要使用区域设置库(https://github.com/giggsey/Locale)。这取代了php-intl扩展
鉴于您的目录结构,您的自动加载器(例如autoload.php)并假设它位于您的src /目录中,如下所示:
spl_autoload_register(function ($class) {
//namespace prefix
$prefix = 'libphonenumber';
// base directory for the namespace prefix
$base_dir = __DIR__ . '/../lib/libphonenumber/src/';
// does the class use the namespace prefix?
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
// no, move to the next registered autoloader
return;
}
// get the relative class name
$relative_class = substr($class, $len);
// replace the namespace prefix with the base directory, replace namespace
// separators with directory separators in the relative class name, append
// with .php
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
// if the file exists, require it
if (file_exists($file)) {
require $file;
}
});
然后你可以使用...
导入它require __DIR__ . "autoload.php";
try
{
$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
//code...
}
catch(NumberParseException $ex)
{
//code ...
}
您可能还需要在autoload.php中加载Locale库。 libphonenumber-php需要mbstring扩展名。
看看......中的例子。
libphonenumber/README
libphonenumber/docs/