使用Drupal Libraries模块加载PHP库和使用类

时间:2013-09-27 14:46:45

标签: php drupal drupal-7 drupal-modules libraries

我正在尝试使用Drupal Libraries模块来加载PHPGoogleMaps库。我已经按照自己的方式创建配置并将库加载到我的模块中。我想我的主要问题是现在使用库类。我确信现在需要调用或使用它们的方式不同。我以前的非drupal代码是有效的:

require( 'resources/PHPGoogleMaps/Core/Autoloader.php' );
$map_loader = new SplClassLoader('PHPGoogleMaps', 'resources/');
$map_loader->register();
$map = new \PHPGoogleMaps\Map;
$address = '...';
$geocode = \PHPGoogleMaps\Service\Geocoder::geocode($address);

现在在Drupal中使用Libraries API我不确定在加载库后从哪里开始,因为在尝试下面的代码时我仍然遇到类未找到的错误:

libraries_load('PHPGoogleMaps');
$map = new \PHPGoogleMaps\Map;
//Fatal error: Class 'PHPGoogleMaps\Map' not found

我应该注意库正确加载并在使用libraries_detect()检查并打印出返回的libraries_load信息时提取正确的信息

在我的库定义中,我不确定我是否需要在此处添加更多自动加载器文件

$libraries['PHPGoogleMaps'] = array(
    'name' => 'PHPGoogleMaps', 
    'vendor url' => 'https://github.com/galen/PHPGoogleMaps', 
    'download url' => 'https://github.com/galen/PHPGoogleMaps', 
    'version arguments' => array(
      'file' => 'version.txt',
      'pattern' => '/Version (\d+)/', 
      'lines' => 1,
    ), 
    'files' => array(
        'php' => array(
            'Core/Autoloader.php',
        ),
    ),
);

1 个答案:

答案 0 :(得分:0)

啊,对于任何想要解决这个问题的人,我仍然需要SplClassLoader信息(我还是很擅长使用它)

$library = libraries_load('PHPGoogleMaps');
$map_loader = new SplClassLoader('PHPGoogleMaps','sites/all/libraries');
$map_loader->register();

我暂时将手动路径放入,但我确信从$ library ['library path'] url

解析这个更好的做法