Symfony2.7,将第三方lib添加到项目中

时间:2016-05-19 07:02:58

标签: php symfony

我卡住了,我想将外部库加载到我的symfony2项目中,但是收到错误声明我的app/autoloader.php找不到类:

...
$loader->add('Tinify', __DIR__.'/../vendor/tinify/tinify/lib');
...

和我想要使用它的文件看起来像:

<?php

namespace XYZ\NewsBundle\Controller;
...

use Tinify;

class NewsController extends Controller{
...
public function displayAction($slug)
{
    $em = $this->getDoctrine()->getManager();

    $external = new \Tinify();
}

错误如下The autoloader expected class "Tinify" to be defined in file "xyz/app/../vendor/tinify/tinify/lib\Tinify.php". The file was found but the class was not in it, the class name or namespace probably has a typo.

vendor\tinify\tinify\lib\Tinify.php下的文件

namespace Tinify;

const VERSION = "1.3.0";

class Tinify {
...
}

我检查了它是否确实有拼写错误,但没有看到一个

2 个答案:

答案 0 :(得分:2)

Tinify的完整限定类名不是Tinify,而是\Tinify\Tinify。它的名称空间+ classname。

NewsController课程中你应该这样做:

use \Tinify\Tinify;

还要注意命名空间开头的反斜杠。

然后在代码中你应该只使用类名而不是命名空间,所以也改变这个:

$external = new \Tinify();

到此:

$external = new Tinify();

答案 1 :(得分:1)

为什么不在作曲家中安装Tinyfy?

composer require tinify/tinify

通过这种方式,composer处理库的自动加载,你不需要手动加载,你只需要创建类的实例并运行

$tinify = new Tinify();