直接在Symfony

时间:2016-08-03 21:44:41

标签: symfony composer-php

我有一个symfony 2.8应用程序,在composer.json文件中我有我想要使用的htmlpurifier库:

"require": {
        ...
        "ezyang/htmlpurifier": "^4.8"
},

它安装,我可以在我的/vendor/目录中看到该库。 Composer会自动为我使用命名空间映射。

return array(
    ...
    'HTMLPurifier' => array($vendorDir . '/ezyang/htmlpurifier/library'),
    ...
);

并且the main site上的说明声明您需要自动加载器,然后使用各种类。

<?php
    require_once '/path/to/htmlpurifier/library/HTMLPurifier.auto.php';

    $config = HTMLPurifier_Config::createDefault();  //defined in HTMLPurifier\Config.php
    $purifier = new HTMLPurifier($config);  //defined in HTMLPurifier\HTMLPurifier.php
    $clean_html = $purifier->purify($dirty_html);
?>

很公平,现在我遇到的问题是使用了darn库。

在我班上我有use \HTMLPurifier\HTMLPurifier.auto;这是一个语法错误(use语句中不应该有句点)。

所以我试过了,

use \HTMLPurifier\Config;

class Test
{
   public function blah()
   {
      $config = Config::createDefault();
   }
}

但Symfony抱怨它找到了Config文件,但是类名不一样(文件名是Config.php,类名是HTMLPurifier_Config)。我尝试用use \HTMLPurifier\Config as HTMLPurifier_Config;替换use语句并且它给了我同样的错误,声称它可以找到文件而不是类。

所以我很困惑。处理作曲家安装的库的最佳方法是什么,这些库具有加载该库的所有类的自动加载器文件?我是否必须更改所有类以使它们与文件名匹配,反之亦然,因此Symfony自动加载器将使用它们?或者,我只是忽略了一种更容易的方式?

一如既往,谢谢。

1 个答案:

答案 0 :(得分:2)

您调用的不存在命名空间。关注代码示例将起作用

use HTMLPurifier_Config as Config;

class Test
{
   public function blah()
   {
       $config = Config::createDefault();
   }
}

由于