【问题标题】:Symfony 2.4 How to load an external class?Symfony 2.4 如何加载外部类?
【发布时间】:2014-01-22 06:42:32
【问题描述】:

我想在我的 symfony 2 项目中添加一个外部库。我用的是2.4版本。我已经阅读了很多“操作方法”,但所有解决方案都不适用于此版本。

你能告诉我如何在我的项目中添加我的课程吗?

我的班级Html2Pdf:

<?php    
class Html2Pdf
{   
   // Code ...
}    
?>

【问题讨论】:

    标签: php symfony psr-0


    【解决方案1】:

    您了解服务吗?

    如果你想在控制器中使用那个 YoutubeDownloader 类,你必须将它定义为一个服务,这样你就可以在任何你想要的地方调用。

    在里面打开你的 services.yml;

    YourBundle/Resources/config/services.yml

    parameters:
        youtubeDownload: YourBundle/YourPathToClass
    
    services:
        bundlename.controllername.controller:
            class:     "%youtubeDownload%"
    

    更多信息: http://symfony.com/doc/current/cookbook/controller/service.html

    【讨论】:

    • Html2Pdf 是一个外部类...不是捆绑包...?
    • 你把那个文件放在哪里了?
    • 在 /vendor/dimitri/Html2Pdf/Html2Pdf.php
    【解决方案2】:

    您可以在使用 \Html2Pdf 的类中调用它,就像使用任何无命名空间的类一样。

    更新

    当您使用 Symfony 和 Composer 时,类和命名空间已经映射,因此您只需使用 \Html2Pdf 命名空间包含它。 \ 表示它是基于根级别的命名空间,而不是相对命名空间(在同一文件夹中)。

    如果您没有使用 Composer 或带有自动加载器的东西,那么您需要使用 include_once('**path to file**/Html2Pdf.php') 将文件包含在堆栈中的某个位置(这可以在当前文件或某种服务于该文件的父文件中)。然后,您可以像使用 Symfony/Composer 和 \ 一样使用它。

    【讨论】:

    • 请在使用课程前说明您如何包含该文件。
    • 如果您已经使用 composer 下载了包,那么它将通过自动加载器自动映射。否则,您可能需要像往常一样包含该文件,include_once("blah\blah\Html2Pdt.php")。我可能写错了,因为我不记得最后一个像我included 一个文件(显然在框架中太长了)。
    • 好的,我建议你在你的答案中添加这个解释。
    【解决方案3】:

    这对我有用。

    include_once $this->get('kernel')->getRootDir() . '/../path/to/Html2Pdt.php';
    
    $aHtml2Pdt = new \Html2Pdt();
    

    我认为这就是@Qoop 想要表达的意思。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-08
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      相关资源
      最近更新 更多