【问题标题】:Symfony2: Use github project (with namespace) as vendor bundleSymfony2:使用 github 项目(带有命名空间)作为供应商包
【发布时间】:2015-04-30 08:09:42
【问题描述】:

我想在 symfony2 项目中使用这个 php 类:
https://github.com/Moinax/TvDb

就像 FosUserBundle:
https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md

我设法通过 composer 在我的供应商目录中安装了该软件包:

composer moinax/tvdb  

我现在需要做什么?
请注意,我的文件夹结构(由 composer 自动创建)现在是:

vendor/moinax/tvdb/(content of the github project)

注意:
在简单的 php(没有 Symfony2)中,这是最基本的用法示例的代码:

// examples/index.php (look at the github project for folder structure)    
include __DIR__ . '/settings.php';
include __DIR__ . '/../src/Moinax/TvDb/Http/HttpClient.php';
include __DIR__ . '/../src/Moinax/TvDb/Http/CurlClient.php';
include __DIR__ . '/../src/Moinax/TvDb/CurlException.php';
include __DIR__ . '/../src/Moinax/TvDb/Client.php';
include __DIR__ . '/../src/Moinax/TvDb/Serie.php';
include __DIR__ . '/../src/Moinax/TvDb/Banner.php';
include __DIR__ . '/../src/Moinax/TvDb/Episode.php'; 

use Moinax\TvDb\Client;
$apiKey = 'YOURAPIKEY';

$tvdb = new Client("http://thetvdb.com", $apiKey);
$tvdb->getSerie(75710);

我想在 AcmeDemoBundle 的控制器内做同样的事情...换句话说:从 AcmeDemoBundle 内的 DefaultController,我想基于 moinax/tvdb 脚本中定义的类创建一个 $tvdb = new Client("http://thetvdb.com", $apiKey); 对象保存为供应商。

【问题讨论】:

  • 你试过了吗?根据您发布的内容,作曲家应该已经为您处理了自动加载。您可以忘记示例中的所有包含内容。它应该可以工作。
  • 我设法让它工作,但仍有一些事情可能会改进......问题:如果我将这个类保存在供应商文件夹中(默认)我需要使用什么路径“使用”声明?如何包含位于供应商文件夹中的资产?
  • 您在问题中显示的名称空间完全相同。 vendor/autoload.php 负责将命名空间映射到特定的文件夹。作曲家的一部分魔力。
  • @Cerad 你是对的......现在一切正常。请发表您的解释作为答案,我会接受。

标签: php symfony


【解决方案1】:

我想我对这个问题的回答会对你有所帮助:
How to register path in autoload using a single instance.

基本上您希望包含 vendor/autoload.php 文件,但您可能还希望配置 composer 以自动加载您的项目源目录以及供应商。

【讨论】:

    猜你喜欢
    • 2016-09-05
    • 2014-04-27
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2011-11-02
    • 1970-01-01
    相关资源
    最近更新 更多