gpt4 book ai didi

php - 如何正确导入多个命名空间

转载 作者:行者123 更新时间:2023-12-04 17:00:24 24 4
gpt4 key购买 nike

我对 PHP 命名空间很陌生,我有一个问题:

如果我们使用 'use' 命令导入多个命名空间,难道我们不会遇到问题吗?
我一直在阅读这篇文章http://www.sitepoint.com/php-namespaces-import-alias-resolution/ ,并且在关于命名空间导入的部分中,它说您仍然需要在函数旁边有一个限定的前缀(即:Lib2),但是在查看一些 Symfony 2 示例文件时,我没有看到这种情况发生。
命名空间解决(在下面的示例文件中)如何解决名称冲突?

namespace Acme\DemoBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Acme\DemoBundle\Form\ContactType;

// these import the "@Route" and "@Template" annotations
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

class DemoController extends Controller
{
/**
* @Route("/", name="_demo")
* @Template()
*/
public function indexAction()
{
return array();
}

/**
* @Route("/hello/{name}", name="_demo_hello")
* @Template()
*/
public function helloAction($name)
{
return array('name' => $name);
}

/**
* @Route("/contact", name="_demo_contact")
* @Template()
*/
public function contactAction(Request $request)
{
$form = $this->createForm(new ContactType());
$form->handleRequest($request);

if ($form->isValid()) {
$mailer = $this->get('mailer');

// .. setup a message and send it
// http://symfony.com/doc/current/cookbook/email.html

$request->getSession()->getFlashBag()->set('notice', 'Message sent!');

return new RedirectResponse($this->generateUrl('_demo'));
}

return array('form' => $form->createView());
}
}

最佳答案

我认为误解来自帖子的文件名。记住:

  • DefaultController.php 与 namespace Acme/AcmeBundle/Controller/将包含在 use Acme/AcmeBundle/Controller/DefaultController
  • DefaultController2.php 与 namespace Acme/AcmeBundle/Controller2/将包含在 use Acme/AcmeBundle/Controller2/DefaultController2

  • 要发生冲突,您需要包含两个名为 DefaultController.php 的文件
  • DefaultController.php 与 namespace Acme/AcmeBundle/Controller
  • DefaultController.php 与 namespace Acme/AcmeBundle/Controller2

  • 然后需要凯文指出的别名
  • DefaultController.php 与 namespace Acme/AcmeBundle/Controller=> use Acme/AcmeBundle/Controller/DefaultController
  • DefaultController.php 与 namespace Acme/AcmeBundle/Controller2=> use Acme/AcmeBundle/Controller2/DefaultController as DefaultController2
  • 关于php - 如何正确导入多个命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24316020/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com