我有一个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
)必须等于类名。