You are here

Drupal 7 下使用xautoload调用PSR4 第三方库

g089h515r806 的头像
Submitted by g089h515r806 on 星期二, 2021-05-11 07:53

作者:亚艾元技术部

一个办法是,使用composer,安装composer manager模块,可以实现这个功能。如果不使用composer呢? 

我们开发的亚艾元采集器,用的Drupal版本是7,其中正文的提取,我们使用了一个第三方的PHP代码,最初是直接include进来的。后来发现,正文的提取正确率,只有90%,对于个别网站,由于里面的html代码的混乱,正确率会更低一点。

如何提升正确率?我们需要更换一个正文提取的库,原来的库已经没有维护了,换了一个版本,但是正确率没有上来。在Nodejs里面,有一个mozilla的正文提取的库,我们在开发chrome plugin的时候,曾经用过,正确率很高。有一个PHP版本andreskrey/readability.php,但是使用PSR4规范开发,需要借助于composer安装。

 

除了composer manager模块以外,在Drupal7下面,还有一个xautoload模块,可以识别第三方的psr4库。

 项目地址:https://www.drupal.org/project/xautoload

 安装量:24354, 属于常用模块。

 安装后,按照它的API文档提示:

function hook_xautoload($adapter) {
 
  // Register a namespace with PSR-0.
  $adapter->add(
    // Namespace of a 3rd party package included in the module directory.
    'Acme\GardenKit\\',
    // Path to the 3rd party package, relative to the module directory.
    'shrubbery/lib');
 
  // Register a namespace with PSR-4.
  $adapter->absolute()->addPsr4(
    // The namespace.
    'Acme\ShrubGardens\\',
    // Absolute path to the PSR-4 base directory.
    '/home/karnouffle/php/shrub-gardens/src');
 
  // Scan sites/all/vendor/composer for Composer-generated autoload files, e.g.
  // 'sites/all/vendor/composer/autoload_namespaces.php', etc.
  $adapter->absolute()->composerDir('sites/all/vendor/composer');
}

实现自己的钩子代码,测试,果然可以使用对应的类了:

use andreskrey\Readability\Readability;

    将最新的库与亚艾元采集器整合起来,原来采集错误的重新采集,大多数都可以正确识别出来。正确率大幅度的提升了。


论坛:

Drupal版本: