使用子命名空间自动加载我的类 (Composer.json)

2023-12-15

我已将以下内容添加到我的composer.json文件。这工作正常,但我有一个很长的子命名空间列表(例如Apple、Orange、Lemon、Pear、Banana...等),我想包括在内。

1)我是否必须指示每个子命名空间或者是否有快捷方式,例如。"Pure\\*": "pure"

作曲家.json:

"autoload": {

    "psr-4": {
        "Pure\\": "pure",
        "Pure\\Apple\\": "pure/src/Pure/Apple",
        "Pure\\Orange\\": "pure/src/Pure/Orange",
        "Pure\\Lemon\\": "pure/src/Pure/Lemon"

    }
}

2)是否最好包含自定义自动加载文件:

作曲家.json:

"autoload": {

    "files": [
      "pure/src/Pure/autoload.php"
    ]
}

自动加载.php:

spl_autoload_register(function ($class) {

    //etc...
}

我是否必须指示每个子命名空间或者是否有快捷方式

声明自动加载时,应使用尽可能长或合理的前缀。

如果此示例包是您创建的唯一一个,并且是唯一使用Pure作为名称空间,如果多个子目录中较长的前缀数量太多,请使用该名称空间。但是,这假设您正在使用的世界上任何其他包都应该避免使用相同的命名空间执行相同的操作。

Composer 将能够在所有可用目录中搜索子命名空间,即如果您有两个包,其中一个表示Pure是可以在pure/src/Pure,另一个说Pure is in code/stuff,Composer会尝试寻找一个类Pure\Something\Class首先在这些目录之一中,如果找不到,则必须尝试第二个目录。作曲家会记住是否pure/src/Pure/Something目录存在并避免查找以以下内容开头的任何内容Pure\Something如果必须加载该名称空间中的第二个类。

但从代码组织的角度来看,一个包应该只提供一组定义的名称空间,并且其他包不应该在同一名称空间中提供类。您可能会意外地将相同的类添加到两个包中,并遇到有趣的问题,如果两个文件不同,这些问题可能难以调试。

包含自定义自动加载文件是否更好:

不,不惜一切代价避免它。您不会从中获得任何好处,因为文件总是需要加载,并且它是占用一些内存的重复代码 - 您已经拥有 Composer 的自动加载器。如果您的代码不符合 PSR-4 或 PSR-0,则可以使用类映射。对于新代码:仅使用 PSR-4!

此外,Composer 无法优化您的自定义自动加载器。尽管任何优化都应该衡量有效性(请阅读我对此的详细回答:如果类映射实际上更快,为什么要在 Composer 中使用 PSR-0 或 PSR-4 自动加载?),如果有好处的话,使用您自己的自动加载器将完全阻止您的代码被优化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用子命名空间自动加载我的类 (Composer.json) 的相关文章

  • 如何在变量中存储包含哈希标记的完整 url?

    我正在尝试存储一个网址 例如 http localhost pro print index php page home http localhost pro print index php page home 在变量中 但我找不到执行此操作
  • 通过删除空 GET 变量并简化变量名称来缩短 URL

    我正在开发一个网站 在提交后组成一个 URLGET form 表单值作为一组变量传递 其中必须至少定义一个变量才能在数据库上进行搜索 我想将网址缩短为删除空表单元素并使其更加用户友好简化变量名称 目前 URL 如下所示 只是带有更多变量 我
  • 使用 JQuery 定义要附加的 HTML 模板

    我有一个正在循环的数组 每次条件成立时 我想附加一份副本HTML下面的代码到具有一些值的容器元素 我可以在哪里放置此 HTML 以以智能方式重复使用 a href class list group item div class image
  • 如何从 PHP 输出 XML 字符串

    我正在获取一个 XML 字符串并在 PHP 中对其进行编辑 以便在访问 PHP 文件时最终输出编辑后的 XML 字符串 我一直在尝试使用 echo 和 print 来输出 XML 文档 但它只打印最里面标签内的数据 我希望它的功能就像直接加
  • 将记录分成两列

    我的数据库中有一个 学生 表 其中包含大约 5 000 条记录 我想将这些记录显示在two分区 如何在不执行查询两次的情况下做到这一点 仅使用单个查询 显示示例http www freeimagehosting net uploads f1
  • 如何修复网站 iframe 错误?

    当我访问此网址时 警告 推荐使用一些广告拦截器 网页链接加载良好 没有错误 但是 当我尝试通过加载同一页面时iframe在我的html代码中 出现错误 我的html代码
  • Codeigniter:重置表单值

    在我看来 我想要做的是在用户成功注册后清除表单字段 这里一切正常 即用户正在注册 成功消息正在向用户显示 除了我想要做的是清除表单字段的值 我正在使用这个 Clear the form validation field data so th
  • 覆盖默认标识符生成策略对关联没有影响

    交响乐 2 7 2 学说 ORM 2 4 7 MySQL 5 6 12 PHP 5 5 0 我有一个具有自定义 ID 生成器策略的实体 它工作完美 在某些情况下 我必须使用 手工制作 的 ID 来覆盖此策略 当主实体在没有关联的情况下被刷新
  • 从 XML 节点 PHP DOM 中删除所有子节点

    我想使用 PHP DOM 从 XML 节点中删除所有子节点 以下之间有什么区别 A while parentNode gt hasChildNodes parentNode gt removeChild parentNode gt chil
  • 如何使用 Laravel Eloquent 返回多重关系?

    我有一张桌子叫users 每个用户都有不同的事情 country device computer category 我为上述每一个 事物 创建了一个表格 类似如下 1 United States 2 United Kingdom 3 Aus
  • 使用 PHP 获取 2 个同名 HTML 输入标签的值

    假设我有下表
  • PHP 中的 MongoDB - 如何将项目插入集合中的数组中?

    这必须很容易 但我似乎无法弄清楚 假设我有一个集合users这是集合中的第一项 id ObjectId 4d8653c027d02a6437bc89ca name Oscar Godson email email protected cdn
  • 获取 JSON 中的 HTML 以在 React 组件中呈现为 HTML

    试图找出如何让链接实际呈现为链接 现在 在我从 Json 文件中读取这行文本后 React 将超链接渲染为文字文本 而不将其渲染为链接 一些数据 json about John has a blog you can read a href
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • 运行没有扩展名的 PHP 页面

    我想在 apache Web 服务器上运行我的 PHP 网页 而不需要 php扩大 所以我添加了以下代码 RewriteEngine on RewriteBase Rewritecond REQUEST URI NC RewriteRule
  • 如何在 Python 中包含 PHP 脚本?

    我有一个 PHP 脚本 news generator php 当我包含它时 它会抓取一堆新闻项并打印它们 现在 我在我的网站 CGI 中使用 Python 当我使用 PHP 时 我在 新闻 页面上使用了这样的内容 为了简单起见 我删掉了这个
  • 从 appsettings.json 读取 JSON 对象

    TL DR 如何从 appsettings json 读取复杂的 JSON 对象 我有一个具有多种类型的配置值的 NET Core 2 x 应用程序 appsettings json看起来像下面的代码片段 我正在尝试读取的值ElasticS
  • Spring-roo REST JSON 控制器损坏日期字段

    我有一个以两种方式使用的数据实体 我在页面加载时用其中的一些数据填充表格 当您单击该列的一行时 我通过 AJAX 获取该项目的详细信息并将其显示在表单字段中 我在服务器端使用 Spring Roo 生成的 REST 端点 在客户端使用 Ba
  • AWS SES模板html部分是多行

    我正在使用 AWS SES 按照文档发送电子邮件https docs aws amazon com ses latest DeveloperGuide send personalized email api html https docs

随机推荐