在Symfony 2中加载父类

时间:2013-03-26 18:26:12

标签: php symfony namespaces

我在Symfony 2控制器中设置了一个测试父类,如下所示:

<?php

namespace Zetcho\AmColAnBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class BaseController extends Controller
{
    public function validateUser()
    {
        $user['first_name'] = "Name";
        $user['signin'] = true;
        return $user;
    }
}
class DefaultController extends BaseController
{
    public function indexAction()
    {
        $user = $this->validateUser();
        $displayParms['user'] = $user;
        return $this->render('ZetchoAmColAnBundle:Default:index.html.twig',$displayParms);
    }
}

代码在src / Zetcho / AmColAnBundle / Controller / DefaultController.php中 测试代码有效。我现在想将父类(BaseController)从控制器文件移出它自己的所以我可以在其他控制器中重用它。我想把它放在与其他控制器相同的目录中,我想在上面的use语句中以与Controller相同的方式声明它。在Symfony 2中执行此操作的最佳/可接受方式是什么?

1 个答案:

答案 0 :(得分:1)

您在Symfony2中执行此操作的方式与使用任何PHP类完全相同。将您的类拆分为单独的文件,如下所示: -

的src / Zetcho / AmColAnBundle /控制器/ BaseController.php

namespace Zetcho\AmColAnBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class BaseController extends Controller
{
    public function validateUser()
    {
        $user['first_name'] = "Name";
        $user['signin'] = true;
        return $user;
    }
}

的src / Zetcho / AmColAnBundle /控制器/ DefaultController.php

namespace Zetcho\AmColAnBundle\Controller;

use Zetcho\AmColAnBundle\Controller\BaseController;

class DefaultController extends BaseController
{
    public function indexAction()
    {
        $user = $this->validateUser();
        $displayParms['user'] = $user;
        return $this->render('ZetchoAmColAnBundle:Default:index.html.twig',$displayParms);
    }
}

一旦你知道如何,它真的很简单。请记住,symfony2中的控制器只是普通的PHP类,没有什么特别之处。