PHP 全局命名空间别名

2024-03-08

这是场景。

我正在将命名空间实现到我的项目中。

我有自己的自定义桥接库,它调用 Zend 等其他库来完成繁重的工作。

我在自定义桥库中使用完全限定的命名空间没有问题,但希望在控制器、模型和视图中保持代码尽可能简洁。

这是我想使用的一些别名的示例:

use BridgeLibName\Stdlib\Arrays as arr;
use BridgeLibName\Stdlib\Objects as obj;
use BridgeLibName\Stdlib\Strings as str;
use BridgeLibName\Stdlib\Numbers as num;
use BridgeLibName\Stdlib\File as file;
etc.........

用法示例:

$file = new file('path/to/file.txt');
$file->create();

or

$obj = arr::toObject(['key1'=>'value1']);

是否可以以任何方式创建一个可以全局访问并且不会在每个文件末尾丢弃的别名或常量?

某种引导文件可以使这些别名保持不变。


当我写这个问题时,我想到了一个解决方案。

您可以通过创建扩展命名空间类的类来伪造它。

example:

class arr extends BridgeLibName\Stdlib\Arrays{

}

要记住一件重要的事情:

如果要扩展类,则必须加载命名空间类。

如果使用过多,这可能会对性能产生影响,因为别名和命名空间仅根据需要加载。

由于我仅使用它来桥接其他类,因此桥接文件中的逻辑很少。

这些桥接文件依次正确使用别名和命名空间,从而根据需要加载实际文件。

如果你不小心实现,你可能会加载很多不必要的东西,并导致你的应用程序变得缓慢和臃肿。


我注意到的一件好事是,像 netbeans 这样的优秀 IDE 似乎也能够使用此方法进行自动完成。


如果有更好的方法来做到这一点,请告诉我。


只是想到对此方法进行修改以解决不必要的类实例化问题。

核心库可以与普通的 psr-0 加载程序一起使用。

为了让别名自动加载,我在命名空间类旁边创建了一个名为 include 的附加目录。

在作曲家中你这样描述它:

"autoload": {
    "psr-0": {
        "BridgeLibName\\": "."
    },
    "classmap": ["include/"]
}

现在,您的库将按预期从正确的命名空间加载,并且您的别名类将根据需要自动加载。

放入 include 目录中的类现在可以扩展命名空间类(如上所示),并且在使用之前将不再加载。

现在您拥有全局别名,而不必通过加载未使用的类来牺牲性能。

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

PHP 全局命名空间别名 的相关文章

  • 合并 url 中的 2 个输入值

    我有这样的形式
  • 如何在 Carbon Laravel 中添加日期和另一个日期?

    在我的 laravel 项目中 我想将日期时间增加到前一个日期时间 这是我的代码 expire order 0 gt expire date new Carbon now gt addMonths 6 这两行的结果是 2018 01 28
  • 发送变量后的 wsdl 服务响应,php

    我是 SOAP WSDL 函数的新手 我有一位客户从一家从事汽车测试的公司获得了 wsdl 文件 我的客户是他们的分包商 他们告诉我们上传有关车牌 类别等信息 一旦详细信息发送完毕 服务器就会做出成功或失败的响应 请您协助 浏览不同的信息
  • PHP:将多字节字符串(单词)拆分为单独的字符

    尝试使用 mb split 将这个字符串 主楼怎么走 分割成单独的字符 我需要一个数组 但没有成功 有什么建议吗 谢谢你 例如 尝试使用带有 u 选项的正则表达式 chars preg split u string 1 PREG SPLIT
  • 在laravel中组合两个不同的无关系数据库表查询进行分页

    我的数据库中有两个不相关的表 我需要将它们合并 以便我可以将其放在我的搜索视图中 但我不知道是否可能 这是我的代码 这news and season表不相关 但它们具有相似的列 我试图将其放入一个对象中以便于分页 是否可以 search r
  • 收到警告“标头不能包含多个标头,检测到新行”

    我正在用 oops 进行编码 以便用 PHP 上传图像 但是提交图片后却出现警告 标题不能包含多个标题 检测到新行 下面是我的函数 它给出了错误 public function ft redirect query if REQUEST UR
  • 无法在jspdf中加载多个图像

    我正在尝试加载动态生成的多个图像 我想将这些图像转换为 PDF 格式 HTML 代码如下
  • 在 Laravel 中的编辑表单上获取选定选项

    我的网站订单有一个可编辑的表单 并且有以下字段 User quantity note status 我在此表单中还有其他选项 但只有这些字段对我来说很重要 以便能够获取默认值 例如 我希望能够查看用户默认订购的数量 然后我可以更改它或保留它
  • div 中的文本字符有限,添加“阅读更多”链接并在单击链接时显示所有字符

    我有一个 div 里面有文本 使用 PHP 和 MySQL 显示 结构如下 div class description p Here is a lot of text p div 我想在 p 标签内的文本超过 100 个字符时显示 阅读更多
  • 纯基于网络的版本控制系统

    我的托管服务当前不允许在其服务器上运行 允许 svn git cvs 我真的希望能够将我的开发计算机上的当前源代码与我的生产服务器 同步 我正在寻找一个纯php python ruby版本控制系统 不只是一个client对于版本控制系统 不
  • yii2 中的自动完成

    在 Yii2 中 我希望当用户开始输入时 我的输入字段之一能够自动完成 下面是我的代码 它使用Jui Autocomplete 这是行不通的 当我打印我的数组时 我就像 Array 1 gt abc 2 gt xyz 4 gt pqr
  • 如何在php中使用一张图像绘制形状

    我需要使用图像的一部分来创建帧图像 例如 用户将从后端上传图像片段 现在我需要根据前端用户的要求在前端创建一个框架 用户将选择框架的高度和宽度 然后他将选择该图像片段 如下所示 我没有办法做到这一点 我尝试通过 css 和 html can
  • 付款成功后保存到数据库(paypal)

    我试图找出在客户使用 paypal 支付商品费用后将数据 之前以表单提交 保存到数据库的最佳方法 沿着这个过程的一些事情 1 在实际网站上填写表格 gt 2 登录 Paypal gt 3 立即付款 PayPal gt 4 数据已插入数据库
  • 使用 :hover 作为元素的内联样式(使用 HTML/CSS/php)[重复]

    这个问题在这里已经有答案了 可能的重复 如何将 a hover 规则嵌入到文档中间的样式属性中 https stackoverflow com questions 131653 how do i embed an ahover rule i
  • 当我使用 session_start() 时,Xampp 7.0.1 Apache 崩溃

    当我在 PHP 中使用 session start 启动会话时 我的 Apache 服务器停止工作 我正在使用 Windows 版 Xampp 7 0 1 我的配置文件如下所示 即使我把它放在文件的第一行 它也不起作用 有人知道如何解决这个
  • Paypal 将钱从一个帐户转移到另一个帐户

    我知道这个建议如何汇款至任何 PayPal 账户 https stackoverflow com questions 1559808 paypal api send money to any paypal account但到目前为止我所尝试
  • 使(文本到图像)图像具有一定的宽度但无限的长度?

    我有下面的代码 可以用大量文本生成图像 我希望该图像的宽度为 700 像素 我还希望它保留字符串所具有的段落结构 该字符串来自 MySQL 数据库 我怎样才能实现这一点 font 2 width imagefontwidth font st
  • php如何生成动态list()?

    根据我的理解 这就是 list 的工作原理 list A1 A2 A3 array B1 B2 B3 所以在帮助下list 我们可以相应地从数组中分配值 这是我的问题 如何生成动态list 1 基于数据库返回结果 我不确定有多少 但我将其全
  • 在 PHP 中接受带有小数点和千位分隔符的国际数字

    对于用户可以输入能量值来计算相应费用的在线计算器 我需要 PHP 脚本来接受各种用户输入 200 万又四分之一焦耳 的值可以输入为 2000000 25 默认表示法 2 000 000 25 带千位分隔符 2000000 25 逗号作为小数
  • Readfile 从大文件中读取 0 字节?

    我正在尝试通过以下方式发送一个大文件readfile 但是 没有任何内容发送到浏览器 并且readfile 回报0 not false 我尝试发送的文件大小为 4GiB 并且可由 PHP 读取 我正在设置set time limit 0 以

随机推荐

  • 将表情符号/表情符号添加到 SQL Server 表

    我正在尝试将表情符号 表情符号插入 SQL Server 数据库 但它只存储 而不是表情符号 表情符号 我只找到 SQL Server 的帮助 而不是 MySQL 的帮助 我试过 link https stackoverflow com q
  • Python ElementTree XML IOError:[Errno 22]无效模式('rb')或文件名

    使用以下代码 import xml etree cElementTree as ET tree ET parse r https apitest batchbook com api v1 people xml auth token GR5d
  • SQL 查询中的 MS Access VBA 数据类型不匹配错误

    我目前有以下 MS Access SQL 查询 它是 Access VBA 函数的一部分 它是在以下人士的帮助下建造的上一个问题 https stackoverflow com questions 38903010 how to sql j
  • org.apache.commons.exec.ExecuteException:进程因 ChromeDriver Chrome Selenium 和 TestNG Suite 错误而退出

    当我通过 TestNG XML 执行 TestNG 套件时 我观察到以下错误 严重 org apache commons exec ExecuteException 进程退出 一个 错误 1073741502 退出值 1073741502
  • 如何过滤elasticsearch全局聚合?

    我想要实现的目标 我希望我的 年龄 聚合不被查询过滤器过滤 并且我希望能够对其应用过滤器 因此 如果我从这个查询开始 query filtered filter terms family name Brown filter 1 aggs y
  • 如何使用 msiexec 将 MSI 安装到特定目录中?

    我想使用 msiexec 将 MSI 文件安装到特定目录中 我在用 msiexec i msi path INSTALLDIR C myfolder qb 使用 INSTALLDIR 无法正常工作 因为 MSI 安装到默认路径而不是指定路径
  • 使用 Map 实现 Trie

    我今天正在解决一个问题 但我被困住了 我知道特里树是如何工作的 但问题是我知道如何用静态数组和类来实现它 今天在网上冲浪时我读到有一种方法可以使用 stl map 来实现 attempts 我今天尝试了 但我仍然不知道如何在 int 上插入
  • 抽象和封装之间的区别?

    封装和抽象之间的确切区别是什么 这里的大多数答案都集中在 OOP 上 但封装开始得更早 每个函数都是一个封装 https en wikipedia org wiki Encapsulation 28computer programming
  • 如何在 Linux 上从网络摄像头捕获静态图像

    我正在尝试为 Linux 编写一个 C Qt 程序 其中我从网络摄像头拍摄静态图像照片 对照片进行一些转换 裁剪 调整大小等 然后将其保存到 jpeg 文件 但我遇到了一些问题 主要问题是标准 UVC USB 视频设备类 Linux 驱动程
  • SVG + Matrix3d 在不同浏览器中呈现不同的效果

    我正在使用 3d 矩阵和 svg 转换对象 但相同的矩阵在不同的浏览器中呈现不同的效果 这是示例 http jsfiddle net dexus kcwrjgew http jsfiddle net dexus kcwrjgew
  • Mongoose默认排序顺序

    有没有办法在 Mongoose 中指定模式 模型级别的排序顺序 我有模型Posts 我总是获取按以下顺序排序的帖子 createdAt 场地 因此 在每个查询中我必须写 sort createdAt 我可以将此订单设为该型号的默认订单吗 在
  • 通过 VBA 迭代切片器并每次选择一个项目

    我的电子表格中有几个切片器 我希望能够通过 VBA 循环其中一个 并一一选择每个选项 下面的宏对我疲惫的眼睛来说似乎很好 但当我运行它时它显然不起作用 当我在下面的 BREAKPOINT 标记处添加断点时 第一个项目被选中 但随后宏转到第二
  • iOS 11:导航控制器内带有滚动视图的弹出视图控制器和不透明的导航栏会导致过渡期间出现奇怪的内容动画

    带有不透明导航栏的导航控制器内带有scrollView的弹出视图控制器会在转换过程中导致奇怪的内容动画 在转换过程中 内容将低于其原始位置 交互式弹出将使这一点变得非常明显 启用安全区域并不能解决此问题 我相信这是 iOS 11 中的一个错
  • Python:While、if、else 计数

    我对 while if 语句有一些疑问 我有一个值列表 通常这些值是字符串 但有时它可以返回 None 这是我的两个尝试 x One Two Three None None New count 0 for y in x while isin
  • R函数返回包的许可证?

    我想返回 R 包的描述文件中声明的包许可证 理想情况下我宁愿拥有 CRAN 自动添加到它识别的所有通用许可证中的 URL 我意识到我可以获得 R 本身分发的许可证 license 令人惊讶的是 这不适用于包裹 例如许可证 包名 此数据也不是
  • jEdit 可以用作 IDE 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 两个浏览器选项卡之间共享变量范围? [复制]

    这个问题在这里已经有答案了 我有一个带有 HTML 表单的 Web 应用程序 其中包含一个选择 选项条目 它在包含 200 个项目的演示中运行良好 即使找到您想要的项目很笨拙 但实际上有超过 30000 个项目 这是零件清单 我的第一个想法
  • MySQL:检查某个值是否包含在范围区间内

    我想知道是否可以检查字符串值是否包含在列中 前提是该列包含开始值和结束值 例如 如果表的 NR 列包含以下行 400 50045 76 23 2512 14 19 21 我想找到其中包含值 421 的行 所以答案应该是第一行 这在mysql
  • 位置固定和-webkit-overflow-scrolling:触摸;

    我正在使用 css 技巧让网站感觉像 Cordova 中的应用程序 webkit overflow scrolling touch 然而 这打破了 消失 反弹 我的位置 固定元素 有什么想法吗 仅供参考 Safari 在 ios 8 上运行
  • PHP 全局命名空间别名

    这是场景 我正在将命名空间实现到我的项目中 我有自己的自定义桥接库 它调用 Zend 等其他库来完成繁重的工作 我在自定义桥库中使用完全限定的命名空间没有问题 但希望在控制器 模型和视图中保持代码尽可能简洁 这是我想使用的一些别名的示例 u