【问题标题】:Working directly with libraries instead of bundles in Symfony2在 Symfony2 中直接使用库而不是包
【发布时间】:2018-08-31 01:57:56
【问题描述】:

如何在现有 Symfony2 项目中直接使用库。例如,我正在尝试添加 faker 库。我通过composer安装了它,但我不知道如何以及在哪里放置我需要的代码。

根据文档:

// require the Faker autoloader
require_once '/path/to/Faker/src/autoload.php';
// alternatively, use another PSR-0 compliant autoloader (like the Symfony2 ClassLoader for instance)

什么是自动装载机的简单解释? 如何在没有捆绑包的情况下直接使用库? 库是否需要具有autoload.php 文件以便可以将其集成到 php 项目中? 上面的代码放在哪里?

有任何链接可以为新手解释这些概念吗?非常感谢您平时的指导。

【问题讨论】:

  • @JaredFarrish,我为 symfony 链接做了第一次阅读没有运气,我会重做。感谢您提供 php-fig 链接和 php 手册。
  • 自动加载本身类似于路径加载,除了类的命名空间通过描述路径映射到目录映射来描述应该从哪里加载类。这样您就不必在实际路径中使用requireinclude。这也是PSR-4 autoload spec,它取代了 PSR-0。

标签: php symfony


【解决方案1】:

您无需进行任何配置。 Faker 库符合 PSR-4(参见 composer.json,line 23),因此只需安装它(通过 composer)并使用正确的命名空间。 Symfony 自动加载 PSR-4 / PSR-0 库/组件。像这样:

<?php # src/AppBundle/Controller/DefaultController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Faker;

class DefaultController extends Controller
{   
    public function indexAction()
    {

        $faker = Faker\Factory::create();
        var_dump($faker); die;
        // ...
    }
}

有用的链接:

【讨论】:

  • 你怎么知道 Faker 符合 PSR-4 标准?
  • @whitelettersinblankpapers 如果您在 Faker github 项目中看到,文件 composer.json(第 23 行)将自动加载模式描述为 PSR-4,请参阅:github.com/fzaninotto/Faker/blob/master/composer.json#L23
  • @whitelettersinblankpapers 你看到了吗?
  • 感谢您愿意提供详细的答案并帮助人们。我现在完全明白了。祝你一切顺利
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
  • 2013-02-21
  • 2012-04-04
  • 2012-11-05
  • 2019-09-02
相关资源
最近更新 更多