带有“use”关键字的可选命名空间

时间:2013-06-20 16:16:24

标签: php class namespaces

Starter:我想知道我们是否可以使用"使用"关键字在我们的应用程序中是可选的。

我在我的应用程序中使用Laravel 4。我有一个控制器和功能。我将特定路线指向特定功能。

但是,此控制器中的一个函数需要使用外部类。我使用"使用"像这样的关键字:

use Payum\Request\CaptureRequest;
use Payum\AuthorizeNet\Aim\PaymentFactory;

这将在Class打开之前在控制器的开头工作。但是,我想知道我是否只能在需要这类课程的特定功能中激活这些使用条款?我尝试过,但它显然抛出了无效的语法错误。

如果我能回答这个问题及其背后的理论,我会很高兴的。我甚至可能会问一个愚蠢的问题:) [因为我知道我可以通过使用像Payum\Request\CaptureRequest\Function这样的完整引用来引用这些类中的函数。或者我可以在Controller文件的开头写这个,因为它不会给执行带来任何加载问题。]

我想要实现的目标:

//use Payum\Request\CaptureRequest;
//use Payum\AuthorizeNet\Aim\PaymentFactory;
////// instead of using the reference here...

class MotawordController extends BaseController {

    function first()
    {
       ...
    }

    function second()
    {

        use Payum\Request\CaptureRequest;
        use Payum\AuthorizeNet\Aim\PaymentFactory;

        ...
    }

1 个答案:

答案 0 :(得分:1)

不,你不能。来自PHP manual

  

use关键字必须在文件的最外层范围(全局范围)或命名空间内声明中声明。这是因为导入是在编译时完成的,而不是运行时,所以它不能是块作用域。