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

max*_*ime 8 php class symfony

我有一个Symfony包,我将不得不使用自定义类.此类不必从所有网站访问,而只需在此捆绑包的控制器中访问.我已经看到了一些与供应商相关的解决方案,但这很重,在我的情况下不是必需的.有人有更简单的解决方案吗?

Car*_*all 20

这就是命名空间的用途.

来自php.net:

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

简而言之,将您的命名空间包含在自定义类的顶部.

SRC /阿克米/ DemoBundle /型号/ MyClass.php

<?php 
namespace Acme\DemoBundle\Model;

class MyClass { // ...
Run Code Online (Sandbox Code Playgroud)

并在您的控制器中使用它:

的src/Acme公司/ SomeOtherBundle /控制器/ 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 { // ...
Run Code Online (Sandbox Code Playgroud)


Cro*_*oll 6

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

// ../src/Acme/Bundle/Model/Utility.php
<?php namespace Acme\Bundle\Model;
class Utility:
..
Run Code Online (Sandbox Code Playgroud)

在控制器中使用:

<?php ..
use Acme\Bundle\Model\Utility;

$x = new Utility(); // FINE!:)
Run Code Online (Sandbox Code Playgroud)

file(Utility.php)的名称必须等于类名.