【问题标题】:Different namespaces for main folder and subfolder主文件夹和子文件夹的不同命名空间
【发布时间】:2019-05-11 16:23:03
【问题描述】:

是否可以这样做:

"psr-4": {
    "App\\": "src/",
    "Tech\\": "src/Tech/"
}

如您所见,src 文件夹有 App 命名空间,但在 src/Tech/ 中必须是另一个只是 Tech 命名空间。我试过了,但总是报错:

Cannot declare class, because the name is already in use

【问题讨论】:

    标签: php namespaces composer-php psr-4 php-namespaces


    【解决方案1】:

    是的,这是可能的,虽然我不知道有什么好的理由去做这样的事情——它只会让理解命名空间结构变得更加困难。

    错误Cannot declare class, because the name is already in use可能是FQN不明确引起的,例如如果你有文件:

    <?php
    
    namespace App;
    
    use Tech\MyClass; 
    
    $myClass =  new MyClass();
    

    你有App\MyClass 然后导入MyClass 是模棱两可的-new MyClass() 可能意味着new \App\MyClass()new \Tech\MyClass()。在这种情况下,您需要使用别名:

    <?php
    
    namespace App;
    
    use Tech\MyClass as TechMyClass; 
    
    $myClass =  new MyClass();
    $myTechClass =  new TechMyClass();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-18
      • 2020-07-17
      • 2017-12-10
      • 2013-04-14
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 2011-12-30
      相关资源
      最近更新 更多