如何在Symfony Bundle中包含自定义类


How to include a custom class in a Symfony Bundle?

我有一个Symfony捆绑包,在那里我必须使用一个自定义类。这个类不必从所有网站都可以访问,只需在这个捆绑包的控制器中即可。我已经看到了一些与供应商相关的解决方案,但这相当繁重,在我的情况下没有必要。有人有更简单的解决方案吗?

这就是名称空间的作用。

来自php.net:

什么是名称空间?在最广泛的定义中,名称空间是封装项的一种方式。

简单地说,在自定义类的顶部包含您的命名空间。

src/Acme/DemoBundle/Model/MyClass.php

<?php 
namespace Acme'DemoBundle'Model;
class MyClass { // ...

并在控制器中使用:

src/Acme/SomeOtherBundle/Controller/DefaultController.php

<?php
namespace Acme'SomeOtherBundle'Controller;
// ...
use Acme'DemoBundle'Model'MyClass; # can be used in any class in any bundle
// ...
class DefaultController extends Controller { // ...

类必须在Acme'Bundle'Model命名空间和文件夹中创建,而不是'Class!谁说的?!

// ../src/Acme/Bundle/Model/Utility.php
<?php namespace Acme'Bundle'Model;
class Utility:
..

在控制器中使用:

<?php ..
use Acme'Bundle'Model'Utility;
$x = new Utility(); // FINE!:)

文件名(Utility.php)必须等于类名。