【问题标题】:Overriding PHP namespace for a specific class覆盖特定类的 PHP 命名空间
【发布时间】:2015-08-27 13:44:38
【问题描述】:

如果我有如下 PHP 命名空间:

<?php

   namespace A\B;

   $test = new MyClass(); 

似乎每次我创建一个新的类实例时,名称都会以命名空间为前缀,例如

$test = new A\B\MyClass();

如果我不想为另一个类使用命名空间会发生什么,例如我想打电话

$test = C\D\AnotherClass();

目前变成:

$test = A\B\C\D\AnotherClass();

这会导致错误。

【问题讨论】:

  • 你会在类中添加一个前导\。例如$test = new \C\D\AnotherClass()
  • 或者你可以使用use关键字。

标签: php namespaces


【解决方案1】:

对于 php7,您可以将代码包装在命名空间中,然后在全局命名空间中使用 use 调用它

namespace FRED\WILMA\BAMBAM {   
    const FW = 2;
    function fw() {
        echo "<br>fw<br>";
    }
 }  

 namespace BARNEY\BETTY { // Create Namespace and add function
     function bb() {
         echo "<br>bb<br>";
     }
 }

 namespace  { // use global namespace
     use FRED\WILMA\BAMBAM;
     use BARNEY\BETTY;
     BETTY\bb();
     BAMBAM\fw();
 } 

【讨论】:

    最近更新 更多