PHP 没你想的那样差
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">PHP<span style="color: black;">此刻</span>名声很糟糕,<span style="color: black;">由于</span>它曾经是“可怕”的。本文试着回答<span style="color: black;">有些</span><span style="color: black;">平常</span>的关于 PHP 的断言,目的是向非技术人员解释,PHP 并不像许多人所说的<span style="color: black;">那样</span>糟糕。</span></p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">它是不是鼓励糟糕的实践?</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">再也不</span>是了。过去,许多<span style="color: black;">研发</span>者被书本教授非常糟糕的实践,<span style="color: black;">因此呢</span> PHP 代码的质量非常差。PHP 曾经还<span style="color: black;">准许</span>你做<span style="color: black;">有些</span>非常奇怪的事情,使得它非常容易构建,但<span style="color: black;">守护</span>起来却是一场噩梦。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">这些<span style="color: black;">再也不</span>是<span style="color: black;">平常</span>的问题。随着高质量学习材料的引入,这些材料易学且易获取,一名新的<span style="color: black;">研发</span>人员<span style="color: black;">能够</span>以正确的方式学习 PHP。<span style="color: black;">这般</span>就<span style="color: black;">能够</span>避免初级<span style="color: black;">研发</span>者<span style="color: black;">由于</span>不<span style="color: black;">晓得</span>构建事物的正确<span style="color: black;">办法</span>而编写<span style="color: black;">有些</span><span style="color: black;">守护</span>起来非常痛苦的代码。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">随着框架的引入,<span style="color: black;">引起</span>许多糟糕体验的大部分通用代码<span style="color: black;">此刻</span>都自动完<span style="color: black;">成为了</span>;<span style="color: black;">因此呢</span>,<span style="color: black;">研发</span>人员只需<span style="color: black;">运用</span>框架,框架就<span style="color: black;">能够</span>正确地对其进行编码。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">况且</span>,这些年来,<span style="color: black;">有些</span>糟糕的实践<span style="color: black;">是由于</span>缺失的特性<span style="color: black;">导致</span>的,<span style="color: black;">引起</span>了<span style="color: black;">有些</span>本<span style="color: black;">不该</span>该被<span style="color: black;">准许</span>的事情被<span style="color: black;">准许</span>。<span style="color: black;">此刻</span>大<span style="color: black;">都数</span><span style="color: black;">状况</span>下,<span style="color: black;">乃至</span>不可能实现以前编写的<span style="color: black;">有些</span>东西来<span style="color: black;">引起</span>这种声誉。</span></p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">小结</h1><strong style="color: blue;"><span style="color: black;">它<span style="color: black;">再也不</span>鼓励糟糕的实践...</span></strong><strong style="color: blue;"><span style="color: black;"><span style="color: black;">经过</span><span style="color: black;">运用</span>框架避免了糟糕实践。</span></strong><strong style="color: blue;"><span style="color: black;">语言特性<span style="color: black;">此刻</span>有很多讨论。糟糕的特性<span style="color: black;">再也不</span>受到支持。</span></strong><strong style="color: blue;"><span style="color: black;">PHP 添加了其他语言中存在的大部分(即使不是<span style="color: black;">所有</span>)的特性。</span></strong>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">它的安全性是不是很差?</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">过去,PHP应用程序的安全性<span style="color: black;">一般</span>很差,<span style="color: black;">由于</span>语言<span style="color: black;">准许</span><span style="color: black;">这般</span>做。这些东西<span style="color: black;">再也不</span>被<span style="color: black;">运用</span>,<span style="color: black;">由于</span> PHP 应用程序的开<span style="color: black;">发掘</span>在<span style="color: black;">已然</span>完全<span style="color: black;">区别</span>。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">经过</span><span style="color: black;">运用</span>自动加载程序来<span style="color: black;">包括</span>文件而不是动态<span style="color: black;">包括</span>文件,<span style="color: black;">已然</span>移除了远程和本地文件<span style="color: black;">包括</span>(其中 PHP 从其它<span style="color: black;">位置</span>而不是最初打算的<span style="color: black;">位置</span>读取文件)。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">经过</span>广泛<span style="color: black;">运用</span>模板系统(<span style="color: black;">能够</span>自动处理<span style="color: black;">表示</span>动态内容的转义和安全问题),<span style="color: black;">已然</span>避免了<span style="color: black;">因为</span>直接在 PHP 中直接<span style="color: black;">运用</span> HTML 所<span style="color: black;">引起</span>的跨站脚本攻击(其中一个用户将 JavaScript 脚本添加到要<span style="color: black;">表示</span>给另一个用户的<span style="color: black;">地区</span>)。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">经过</span>在 SQL 中<span style="color: black;">运用</span> prepared 语句,避免了 SQL 注入攻击(这是<span style="color: black;">因为</span>需要构建 SQL <span style="color: black;">查找</span>并将<span style="color: black;">查找</span>和数据<span style="color: black;">一块</span>发送<span style="color: black;">引起</span>的,其中用户<span style="color: black;">能够</span>向<span style="color: black;">查找</span>中<span style="color: black;">增多</span>额外的 SQL 命令)。<span style="color: black;">另一</span>,ORM 的<span style="color: black;">运用</span><span style="color: black;">亦</span>很<span style="color: black;">广泛</span>,它<span style="color: black;">保证</span>用户数据和<span style="color: black;">查找</span>是分<span style="color: black;">研发</span>送的,而 SQL <span style="color: black;">不可</span>将其视为单独的命令。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">经过</span>广泛<span style="color: black;">运用</span>且采用 nonce 系统的 form 库,避免了跨站请求伪造(其中,用户能够被诱骗在你的站点上执行某些操作)。</span></p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">小结</h1><strong style="color: blue;"><span style="color: black;"><span style="color: black;">再也不</span>是了。</span></strong><strong style="color: blue;"><span style="color: black;"><span style="color: black;">经过</span><span style="color: black;">运用</span>自动加载程序(所有主流框架的标配),避免了远程和本地文件<span style="color: black;">包括</span>。</span></strong><strong style="color: blue;"><span style="color: black;"><span style="color: black;">经过</span><span style="color: black;">运用</span>模板语言<span style="color: black;">做为</span>标准或一种前端框架(例如 React),避免了跨站脚本(XSS)攻击。</span></strong><strong style="color: blue;"><span style="color: black;"><span style="color: black;">经过</span><span style="color: black;">运用</span> ORMs 和广泛<span style="color: black;">运用</span> prepared 语句,避免了 SQL 注入。</span></strong><strong style="color: blue;"><span style="color: black;"><span style="color: black;">经过</span><span style="color: black;">运用</span> nonce token(被所有主流框架自动支持),避免了跨站请求伪造(CRSF)攻击。</span></strong>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">它是不是真的很慢?</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">这取决于你把它与什么比较。<span style="color: black;">倘若</span>你把 PHP 与 Java、C <span style="color: black;">或</span> Go 比较,<span style="color: black;">那样</span>它是比较慢。<span style="color: black;">然则</span><span style="color: black;">倘若</span>你把 PHP 与 Python、Ruby 等等比较,<span style="color: black;">那样</span>它并不慢。在同类型的语言中,PHP 是最快的之一,并且<span style="color: black;">持续</span>在<span style="color: black;">加强</span>性能。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">大<span style="color: black;">都数</span><span style="color: black;">状况</span>下,你的应用程序慢是<span style="color: black;">由于</span>服务器过载<span style="color: black;">或</span>数据库<span style="color: black;">查找</span>慢。这些问题在任何语言中都会存在。</span></p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">小结</h1><strong style="color: blue;"><span style="color: black;">PHP 与编译型语言相比是比较慢。</span></strong><strong style="color: blue;"><span style="color: black;">PHP 与其它脚本型语言相比是比较快的。</span></strong><strong style="color: blue;"><span style="color: black;">网站慢<span style="color: black;">一般</span>不是<span style="color: black;">因为</span><span style="color: black;">运用</span>的语言<span style="color: black;">不足</span>快,而是<span style="color: black;">由于</span>服务器或数据库<span style="color: black;">引起</span>的性能问题。</span></strong>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">它的伸缩性是不是真的很差?</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">实质</span>上,任何语言都<span style="color: black;">能够</span>伸缩。编译型语言(例如 Go、C 或 Rust)比脚本型语言(例如 PHP)的扩展成本更低。然而,它们并不是为了<span style="color: black;">一样</span>的任务而设计的。事实上,它们都是<span style="color: black;">同样</span>的;这简单地归结于你<span style="color: black;">运用</span>的服务器数量。<span style="color: black;">倘若</span>你<span style="color: black;">运用</span>足够多的服务器,你<span style="color: black;">能够</span>扩展任何应用程序。PHP 比其它脚本型语言的扩展成本更低,<span style="color: black;">由于</span>它需要更少的资源来<span style="color: black;">起始</span>运行,并且<span style="color: black;">能够</span>在<span style="color: black;">拥有</span><span style="color: black;">更加多</span> CPU 的较小内存的服务器上运行。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">另一</span>,<span style="color: black;">针对</span>伸缩性,重要的是数据库。<span style="color: black;">倘若</span>你能够扩展你的数据库,你就<span style="color: black;">能够</span>扩展你的应用程序。数据库比应用服务器更难扩展。<span style="color: black;">增多</span>另一个读取数据库的客户端很容易;但是,让数据库快速运行要难得多。</span></p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">小结</h1><strong style="color: blue;"><span style="color: black;">任何语言都<span style="color: black;">能够</span>伸缩;这取决于你<span style="color: black;">运用</span>多少服务器。</span></strong><strong style="color: blue;"><span style="color: black;">扩展的真正问题是数据库而不是所<span style="color: black;">运用</span>的应用程序语言。</span></strong><strong style="color: blue;"><span style="color: black;"><span style="color: black;">倘若</span>你能够扩展你的数据,你就能扩展你的应用程序。</span></strong>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">我应该<span style="color: black;">始终</span><span style="color: black;">运用</span>它吗?</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">不。每种编程语言都有其<span style="color: black;">善于</span>的<span style="color: black;">行业</span>。PHP 非常适合 Web 应用程序。你应该用它来构建网站和 API。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">倘若</span>你正在构建一个系统应用程序,其中每毫秒都很重要,<span style="color: black;">运用</span> Rust <span style="color: black;">或</span> C。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">倘若</span>你正在构建一个人工智能应用程序,Python 是一个好选项。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">倘若</span>你正在构建一个 SaaS 应用程序,PHP 是一个好选项。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">倘若</span>你正在构建一个安卓应用程序,Kotlin 是一个好选项。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">倘若</span>你正在构建一个运行在多个平台上的应用程序,Java 是一个好选项。</span></p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">小结</h1><strong style="color: blue;"><span style="color: black;">不,每种语言都有其最佳用例。</span></strong><strong style="color: blue;"><span style="color: black;">PHP 的最佳用例是 Web 应用程序。</span></strong><strong style="color: blue;"><span style="color: black;">Go、Rust、C 适合系统应用程序。</span></strong><strong style="color: blue;"><span style="color: black;">Python 适合人工智能。</span></strong><strong style="color: blue;"><span style="color: black;">Kotlin 适合安卓应用程序。</span></strong><strong style="color: blue;"><span style="color: black;">Java 适合与平台无关的应用程序。</span></strong>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">结论</h1>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">非常多</span>关于 PHP 的说法都<span style="color: black;">已然</span>过时 10 年了。在<span style="color: black;">咱们</span>看来,<span style="color: black;">倘若</span>有人给你关于某个技术主题的过期 10 年的信息,<span style="color: black;">那样</span>这个人可能不是你想要信任的技术专家。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">PHP 是创建 Web 应用程序的一门好编程语言,<span style="color: black;">咱们</span>认为它是 Web 应用程序<span style="color: black;">研发</span>的最佳语言。</span></p>
<h1 style="color: black; text-align: left; margin-bottom: 10px;">小结</h1><strong style="color: blue;"><span style="color: black;">这些抱怨中<span style="color: black;">非常多</span>都过期 10 年了。</span></strong><strong style="color: blue;"><span style="color: black;"><span style="color: black;">咱们</span>认为 PHP 是构建 Web 应用程序的最佳语言。</span></strong>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">原文链接:</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">https://www.getparthenon.com/blog/php-isnt-that-like-really-bad/</span></p>
你的见解真是独到,让我受益良多。
页:
[1]