8

我有一个 Symfony 包,我必须在其中使用自定义类。不必从所有网站都可以访问此类,而只需在此捆绑包的控制器中即可。我已经看到了一些与供应商相关的解决方案,但这很繁重,对我来说不是必需的。有人有更简单的解决方案吗?

4

2 回答 2

20

这就是命名空间的用途。

来自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 { // ...
于 2013-07-03T14:21:32.433 回答
7

必须在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) 必须与类名相同。

于 2015-04-02T16:19:08.680 回答