”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > PHP:不,不可能

PHP:不,不可能

发布于2024-07-31
浏览:310

PHP: no, it

您可以在此标题中添加“还”!有时,事情就是这样,只是因为没有人知道如何做得更好。

然而,这并不意味着一切都是好主意。

PHP不支持多重继承

您根本不能执行以下操作:

class Child extends Parent1, Parent2 {}

但是,许多开发人员认为有更好的方法,例如使用接口强制类实现特定行为。

请注意,您仍然可以对这些接口应用某种多重继承(如果这对您的情况确实有意义):

interface A {}
interface B {}
interface C extends A, B {}

然而,对我来说,这并不是反对多重继承的最佳论据。许多编程语言注重简单性和可读性而不是复杂性。

引入多重继承可能会导致很多误用,更不用说钻石问题了,这对于 PHP 等高级语言来说会是个问题。

最好能够避免不必要的复杂性。

PHP不支持多线程

许多编程语言提供内置工具来同时执行多个线程(例如 Java、C )。

Pthreads 试图在 PHP 中引入多线程,但 pthreads 和并行的创建者 Joe Watkins 在 2019 年 2 月宣布:

由于架构缺陷,PHP 7.4 之后将不再维护 pthreads。

来源:PHP 文档 - phtreads

如果你想进一步挖掘,你可以检查parallel,它的灵感来自Go并发。

虽然并行非常酷,但您的情况真的需要如此复杂吗?

如果您需要异步处理的内置机制,现在可以使用 Fibers(自 PHP 8.1 起)。

Fibers 允许您编写可中断的函数。

虽然 Fibers 非常酷,但您的情况真的需要如此复杂吗?

使用 ReactPHP 或 Swoole 等第三方解决方案可能是更好的选择,特别是当您只需要事件循环时。

更好的是,您可以构建一个可以处理消息并重试失败作业的队列机制。

Symfony 组件 HTTP 客户端还支持各种异步操作(例如并发异步流和多路复用请求/响应)。

PHP 不适合实时处理

PHP是解释型语言,不兼容密集型操作和需要低延迟、高可预测性的系统。

虽然确实如此,但为什么要使用 PHP 进行高频交易、流媒体、在线游戏或机器和流程的高级监控?

包起来

PHP 适用于网络以及您可能知道的许多其他创意用途。

我希望它能保持简单性,因为它绝对是一个功能。

版本声明 本文转载于:https://dev.to/spo0q/php-no-its-not-possible-4ji6?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用 whereBetween() 和 Carbon 检索 Laravel 中的重复项目?
    如何使用 whereBetween() 和 Carbon 检索 Laravel 中的重复项目?
    Laravel $q->where() Between Dates: An Optimized Approach for Recurring Projects检索设置为续订或重复的项目特定时间段,您可以将 $q->where() 方法与自定义函数一起使用。然而,在 Laravel 中有更有效的方法来...
    编程 发布于2024-11-03
  • 模拟 Python 类
    模拟 Python 类
    最近,我不得不使用 Pytest 为 Python 模块编写单元测试。该模块包含一个类,其他类在其构造函数中初始化。 像往常一样,我为此类创建了一个固定装置,以便轻松为每个类方法编写测试。此时,当我尝试模拟构造函数中启动的不同类时,我遇到了一些问题。模拟不起作用,这些类的实例仍在创建中。 经过一些研...
    编程 发布于2024-11-03
  • 如何在单个 MySQL 查询中获取多条记录及其相关数据?
    如何在单个 MySQL 查询中获取多条记录及其相关数据?
    在一个响应中返回多个响应数据在您的 PHP 代码中,您有一个从数据库表中获取多行数据的查询。但是,您收到多个响应,并且希望将它们合并为具有多个记录的单个响应。要实现此目的,您需要修改查询以对必要的表执行左联接。您将获取主题数据并使用左连接包含相关学生信息,而不是获取学生数据。这将允许您在单个响应中包...
    编程 发布于2024-11-03
  • D - 依赖倒置原理(DIP)
    D - 依赖倒置原理(DIP)
    Before understanding DIP (Dependency Inversion Principle), it's important to know what High-Level and Low-Level modules and abstractions are. ...
    编程 发布于2024-11-03
  • 为什么 JavaScript RegEx 无法验证输入?
    为什么 JavaScript RegEx 无法验证输入?
    Javascript 中的 RegEx 功能的斗争:“Regex 不工作”的案例研究在标题中引用的查询的上下文中,“Javascript RegEx 不工作” ,”用户遇到了一个问题,即无论输入值如何,正则表达式 (regEx) 始终返回 false。查询中提供的代码片段如下:function ch...
    编程 发布于2024-11-03
  • 如何对 Ajax 请求进行排序以实现最佳控制?
    如何对 Ajax 请求进行排序以实现最佳控制?
    对 Ajax 请求进行排序迭代集合并对每个元素进行单独的 Ajax 调用时,必须控制顺序以防止服务器过载和浏览器冻结。虽然可以使用自定义迭代器,但还有更优雅的解决方案可用。jQuery 1.5 在 jQuery 1.5 及更高版本中,$.ajaxQueue() 插件利用 $ .Deferred、$....
    编程 发布于2024-11-03
  • 如何为 DOM 元素生成精确的 CSS 路径?
    如何为 DOM 元素生成精确的 CSS 路径?
    以增强的精度从 DOM 元素检索 CSS 路径提供的函数尝试为给定 DOM 元素生成 CSS 路径。然而,它的输出缺乏特异性,无法捕获元素在其兄弟元素中的位置。为了解决这个问题,我们需要一种更复杂的方法。改进的 CSS 路径函数下面介绍的增强函数解决了原来的限制:var cssPath = func...
    编程 发布于2024-11-03
  • 如何将单个 Python 字典写入具有精确标题和值行的 CSV 文件?
    如何将单个 Python 字典写入具有精确标题和值行的 CSV 文件?
    探索将 Python 字典写入 CSV 文件的细微差别您对将 Python 字典无缝写入 CSV 文件的追求给您带来了意想不到的挑战。虽然您设想在作为标题的字典键和作为第二行的值之间进行清晰的划分,但您当前的方法似乎还不够。让我们深入细节,解锁解决方案。问题在于方法的选择。 DictWriter.w...
    编程 发布于2024-11-03
  • 如何处理 Go 中延迟函数的错误返回值?
    如何处理 Go 中延迟函数的错误返回值?
    处理 Go 中返回值错误的延迟函数当返回变量的函数在没有延迟的情况下被延迟时,gometalinter 和 errcheck 正确地发出警告检查其返回的错误。这可能会导致未处理的错误和潜在的运行时问题。处理这种情况的习惯用法不是推迟函数本身,而是将其包装在另一个检查返回值的函数中。这是一个例子:de...
    编程 发布于2024-11-03
  • 为什么程序员不能总是记住代码:背后的科学
    为什么程序员不能总是记住代码:背后的科学
    如果您曾经想知道为什么程序员很难回忆起他们编写的确切代码,那么您并不孤单。尽管花费了数小时编码,许多开发人员经常忘记细节。这并不是因为缺乏知识或经验,而是因为工作本身的性质。我们来探究一下这种现象背后的原因。 编程的本质 通过记忆解决问题 这比仅仅记忆语法更能解决问题...
    编程 发布于2024-11-03
  • 你并不孤单:在社区的支持下掌握 Python
    你并不孤单:在社区的支持下掌握 Python
    加入 Python 社区可获得:社区论坛:向经验丰富的开发者获取支持和建议(如 Stack Overflow)。Discord 服务器:实时聊天室,提供即时支持和指导(如 Python Discord)。在线课程和研讨会:来自专家的指导,涵盖各种主题(如 Udemy 上的 Python NumPy ...
    编程 发布于2024-11-03
  • 学习伙伴
    学习伙伴
    聊天机器人界面,允许用户输入消息并接收来自 GPT-3.5 语言模型的对话响应。 特征 用于处理 HTTP 请求的基于 Flask 的 Web 服务器。 呈现用作用户界面的基本 HTML 模板 (chat.html)。 通过 POST 请求接受用户输入并将其发送到 OpenAI 的 GPT-3.5 ...
    编程 发布于2024-11-03
  • 前端开发 + 数据结构和算法:DSA 如何为您的 React 应用程序提供动力 ⚡
    前端开发 + 数据结构和算法:DSA 如何为您的 React 应用程序提供动力 ⚡
    专注于前端的面试通常根本不关心 DSA。 对于我们这些记得在学校/大学学习过 DSA 的人来说,所有的例子都感觉纯粹是算法(有充分的理由),但几乎没有任何例子或指导来说明我们每天使用的产品如何利用这个概念。 “我需要这个吗?” 你已经问过很多次这个问题了,不是吗? ? 以下是您今天可以在 React...
    编程 发布于2024-11-03
  • 为什么表行上的框阴影在不同浏览器中表现不同?
    为什么表行上的框阴影在不同浏览器中表现不同?
    跨浏览器表行上的框阴影外观不一致应用于表行 () 的 CSS 框阴影可能表现出不一致的行为跨各种浏览器。尽管 CSS 相同,但某些浏览器可能会按预期显示阴影,而其他浏览器则可能不会。要解决此问题,建议将 Transform 属性与 box-shadow 属性结合使用。将scale(1,1)添加到tr...
    编程 发布于2024-11-03
  • 探索 PHP 中的并发性和并行性:实践教程和技巧
    探索 PHP 中的并发性和并行性:实践教程和技巧
    理解并发性和并行性对于编写高效的 PHP 应用程序至关重要,特别是在处理需要同时处理的多个任务或操作时。这是理解和实现 PHP 并发性和并行性的分步指南,包含实践示例和说明。 1.并发与并行 并发:指系统通过交错执行同时处理多个任务的能力。这并不一定意味着任务是同时执行的,只是对它们...
    编程 发布于2024-11-03

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3