我有一个Symfony包,我必须使用自定义类。此类不必从所有网站访问,而只需在此捆绑包的控制器中访问。 我已经看到了一些与供应商相关的解决方案,但这很重,在我的情况下不是必需的。 有人有更简单的解决方案吗?
答案 0 :(得分:20)
这是namespaces的用途。
来自php.net:
什么是命名空间?在最广泛的定义中,命名空间是一种封装项目的方式。
简单地说,将您的命名空间包含在自定义类的顶部。
<强>的src / Acme公司/ DemoBundle /型号/ MyClass.php 强>
<?php
namespace Acme\DemoBundle\Model;
class MyClass { // ...
并在您的控制器中使用它:
<强>的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 { // ...
答案 1 :(得分:6)
必须在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
)必须等于班级名称。