gpt4 book ai didi

PHP 子命名空间的使用

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

PHP 和命名空间。

我假设我误解了它的正确用法/想法..
(请阅读到最后)
我有两个文件:1.php , 2.php
1.php:

namespace App\someNS;

class classname{}

2.php:
namespace App;
include_once("1.php");
use App\someNS; // tried to comment it also, not working

$ x = new classname();
// this fails..

我的假设是命名空间是容器\范围,所以通过包含一个 - 我可以访问它的内容;
我预计 use App\someNS将“包括”它。

我知道 someNS\classname() 会起作用,但是如果从命名空间中唯一的“利润”是对变量使用相同名称的选项,我就看不到命名空间的巨大优势,如果毕竟我仍然需要使用获取它们的路径......我错过了什么?

最佳答案

命名空间,use包含文件实际上是三个不同的东西:

  • 命名空间只是一个前缀,允许在代码库的不同部分重用相同的类和函数名称。
  • use语句仅创建一个别名,因此您无需键入全名(命名空间 + 本地名称),或者您可以使用不同名称的所有对象。它不导入或加载代码。
  • include实际上是使其他文件中的代码可用,但在 PHP 中实现命名空间之前,它已经存在多年。

  • 说,你的代码应该抛出:

    Class 'App\classname' not found in ...\2.php



    那是因为您的 use别名用于命名空间,因此您需要调用:
    new someNS\classname();

    能够做到 new classname()您需要为类添加别名:
    use App\someNS\classname;

    关于PHP 子命名空间的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62305613/

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