1

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

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

... 等等。

问题是,如何“Symfonyze”这些不舒服的 require 语句,然后,如何将这些文件包含在 Symfony2 包中?

我们考虑了两种可能性:

  1. 将文件包含在/vendorssymfony 目录中,或者
  2. 包括每个类作为服务。
4

4 回答 4

5

如果这些类驻留在包中,那么您可以使用如下:假设您的包名称是 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 文档中的用途

于 2013-01-19T14:31:08.800 回答
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

于 2013-01-19T13:42:32.670 回答
1

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

use Acme\DemoBundle\lib\Abc; // its your class name 
于 2013-02-28T16:51:50.547 回答
1

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

于 2017-04-12T17:09:29.920 回答