我现在正在使用 php + Symfony2 框架制作东西,并且我有以下代码:
require_once("one_file.php");
require_once("another_file.php");
... 等等。
问题是,如何“Symfonyze”这些不舒服的 require 语句,然后,如何将这些文件包含在 Symfony2 包中?
我们考虑了两种可能性:
- 将文件包含在
/vendors
symfony 目录中,或者 - 包括每个类作为服务。
我现在正在使用 php + Symfony2 框架制作东西,并且我有以下代码:
require_once("one_file.php");
require_once("another_file.php");
... 等等。
问题是,如何“Symfonyze”这些不舒服的 require 语句,然后,如何将这些文件包含在 Symfony2 包中?
我们考虑了两种可能性:
/vendors
symfony 目录中,或者如果这些类驻留在包中,那么您可以使用如下:假设您的包名称是 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 文档中的用途
您可以遵循 PSR-0 标准让自动装载机处理此问题。请参阅https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md和http://getcomposer.org/doc/04-schema.md#psr-0。
或者你可以保持你的文件原样,并告诉作曲家每次都需要它们:http: //getcomposer.org/doc/04-schema.md#files
您必须在 acme 文件夹中创建一个文件夹,例如 lib 将这些文件放在 lib 文件夹中,然后使用此语句
use Acme\DemoBundle\lib\Abc; // its your class name
您想遵循这些其他答案,尤其是批准的答案,但如果您使用的是包含大量 PHP 文件的第三方库,则可以require_once(__DIR__.'/path/to/file.php')
快速修复。