在symfony上的require_once

时间:2013-01-19 03:54:40

标签: php symfony composer-php

我现在用php + Symfony2框架制作东西,我有以下代码:

require_once("one_file.php");
require_once("another_file.php");

......等等。

问题是,如何“Symfonyze”这些不舒服的需要句子,以及如何将这些文件包含在Symfony2包中?

我们考虑过两种可能性:

  1. 将文件包含在symfony的/vendors目录中,或
  2. 将每个课程都包含在服务中。

4 个答案:

答案 0 :(得分:5)

如果这些类驻留在bundle中,那么你可以使用如下: 假设您的包名称是AcmeDemoBundle。将此文件放在Acme / DemoBundle / Model /

  //one_file.php
   namespace Acme/DemoBundle/Model;
   class one_file {
   ...........
   }

要在控制器或任何其他文件中使用此文件:

这里是Acme / DemoBundle / Controller / UserController.php

   namespace Acme/DemoBundle/Controller   
   use Acme/DemoBundle/Model/one_file
    class UserController {
    public $one_file=new one_file();
    }

在php 5.3之后,引入了名称空间。您应该查看名称空间及其在php文档中的用法

答案 1 :(得分:2)

您可以按照PSR-0标准让自动加载器处理此问题。请参阅https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.mdhttp://getcomposer.org/doc/04-schema.md#psr-0

或者您可以按原样保存文件,并告诉作曲家每次都要求他们:http://getcomposer.org/doc/04-schema.md#files

答案 2 :(得分:1)

你必须在acme文件夹中创建一个文件夹,比如lib将这些文件放在lib文件夹中然后使用这个语句

use Acme\DemoBundle\lib\Abc; // its your class name 

答案 3 :(得分:1)

您希望遵循这些其他答案,尤其是已批准的答案,但如果您使用的是包含大量PHP文件的第三方库,则可以require_once(__DIR__.'/path/to/file.php')作为快速修复。