搜索
首页后端开发php教程图书评论:PHP中的实用设计模式

图书评论:PHP中的实用设计模式

对Brandon Savage在PHP中的实用设计模式的评论将包括我对书籍的看法和印象,以及自我出版的方面。非常感谢Brandon给了我评论副本。

设计模式是关于常见问题的常见解决方案。

……它们是概念,而不是蓝图;想法,未完成设计。
…他们为原本困难的情况增添了清晰度。

- Brandon Savage,PHP中的实用设计模式

钥匙要点

Brandon Savage的“ PHP中实用设计模式”
    为理解和实施PHP中的设计模式提供了综合指南,重点是针对常见问题的共同解决方案。该书涵盖了广泛的模式,每个模式都用潜在的代码实现进行了解释,这使其成为中级开发人员的宝贵资源。
  • >
  • >对本书的内容受到赞扬,评论指出了一些缺点。其中包括缺乏对某些模式的解释,例如注册表模式,以及读者熟悉高级概念和第三方内容的假设。该评论还批评了本书在MVC应用程序中的模型方法,并且缺乏针对域模型模式的实际示例。
  • >评论重点介绍了本书缺乏专业指导,语言错误和偶尔在代码样本中的奇数的挑战。尽管存在这些问题,但建议该书适用于希望研究设计模式的中级开发人员,但对于需要首先掌握基本概念的初学者。
  • content
从更轻的介绍性注释开始,布兰登解释了对框架的需求,认为OOP并不意味着要在课堂上包装一些东西,并详细介绍了为什么设计模式似乎很难学习。然后,他继续对扎实的原则进行温和的介绍,并为更高级的概念奠定了基础。他解释了为什么每个坚实的规则都很重要,这意味着什么。鉴于Solid是一个良好的软件设计原则,因此将其与本书中要解释的每种模式进行比较是很自然的。或者,更确切地说,要评估每种模式如何尊重坚实的原则,同时为开发人员提供其预期的功能。

>如果我在Dreyfus模型术语中表达了重要的事情,他声称这本书将在那里将新手变成一个胜任的级别的开发人员,而不会使他们遭受高级初学者的错误,而实际上,这种学习方法并非完全可能 - 那是可能的 - 只是人类知识获取过程的工作原理。图书评论:PHP中的实用设计模式


>从TOC中可能不会过分明显,因此本书中解释的模式是:

>
  • (摘要)工厂模式
  • singleton模式
  • 构建器模式
  • 装饰器图案
  • 适配器模式
  • 桥模式
  • 外观模式
  • 策略模式
  • 介质模式
  • 观察者模式
  • 责任链模式
  • 迭代器模式
  • 复合模式
  • MVC模式
  • 域模型模式
  • 活动记录模式
  • 前控制器模式
>涵盖了如此多的模式(并且最涵盖的效果最多),我惊讶地看到一个句子,例如“

[…],例如,注册表模式(本书中未涵盖)…”。为什么不呢?注册表模式是一种流行的模式,即使不是当今不完全推荐的,也很容易解释。> 按模式进行模式,每个图案都很好地解释了,大多数随后是代码示例,证明了它们的潜在实现,尽管我确实对Cache的出厂模式示例有一个困惑。

在不同的缓存示例(APC和memcache)的示例中实现了该模式,并且两者都通过工厂产生,该工厂都注入了任何服务需要缓存组件中。>

>对我来说很有意义,但是我看到经验不足的人想知道为什么一个人可能真的需要工厂步骤,而不仅仅是键入提示构造函数中的缓存界面本身,需要注入缓存对象本身,而不是其工厂。当前示例既具有出厂接口和高速缓存接口,至少,一个似乎是剩余的。这从来没有以中级开发人员平易近人的方式来解释,我担心它可能会使某些人感到困惑。我对桥梁模式的解释也不满意 - 它似乎缺乏,就像它只是在表面上被划伤了,从来没有正确返回一样。

> 另一方面,我绝对喜欢复合模式的解释及其在非常有趣的树示例上的演示 - 作者构建了一棵复合树,具有任意数量的嵌套节点级别,该级别非常适用于菜单构建,层次结构,以及更多 - 我对装饰图案的解释感到特别兴奋。它是以一种非常平易近人的方式完成的,并且以良好的可用示例进行。尤其是这种模式是我一直很难在被问到时用蓝色解释的人,而且我还没有找到比本书更好的细分。

>

忽略了​​模型

在本书的一个实例中,布兰登说,模型是MVC应用程序中最重的举升机,其中包含所有业务逻辑和验证代码。这是我无法接受的陈述 - 我可以想到一个不正确的例子:拉拉维尔(Laravel)。随着Laravel 5的出现并添加表格请求,这些模型将增长更轻。

图书评论:PHP中的实用设计模式

被授予,有些人倾向于将所有东西都放在模型中,但是有些人也将相同数量的上帝代码放入控制器中。我的经验和偏好说,与框架相关的一切都应该很轻(小型控制器,小型模型,小或没有视图),而与服务有关的一切(服务,插件,图书馆,助手)都可以像他们需要一样胖,只要它们之间可以在框架之间进行可行的操作。我想那是个人的喜好。另一件事让我感到奇怪:

>

创建好的模型是任何开发人员铲球最复杂的任务之一。 长期以来,Zend Framework文档认为没有Zend_model类,因为创建模型是应用程序开发过程的大部分。 要创建zend_model将是假设每个人都可以或想使用相同的模型结构,这是不可能的,这是我本章中未包含任何代码的相同原因。 >这确实有意义,但以最简单的方式体现了价值,网关和存储对象,这对首次被引入域模型模式的人们非常有益。我认为,在本书中,域模型模式过于忽视,并且太过理论上了。

知识的诅咒
在整本书中,布兰登在没有链接到它的情况下(四个帮派)提到了高级概念(ORM,继承,依赖注入)和第三方内容,假设读者熟悉这一切。尤其是四个场合提到了四个团伙,并且至少可以与设计模式的链接使用 - 否则“新手”和“高级初学者”读者只会在混乱中浏览一下句子。

在其他情况下,段落结构的编写方式远远超出了新手对中级用户的理解水平:

>这是一个古老的问题,许多开发人员一直都在努力:如果我努力颠倒依赖关系而不是在课堂内创建对象,那么我该如何创建在运行时需要的依赖项,可以一定要注入?

>这不是读者所消耗的水平,他们需要这本书熟悉模式。完全了解这句话的读者可能已经完全熟悉了书中的所有模式,从而使真正的目标受众质疑。我相信这是由于萨维奇先生遭受了所谓的“知识诅咒”的困扰。

图书评论:PHP中的实用设计模式

wikipedia将其定义为:

知识的诅咒是一种认知偏见,它导致更有信息的各方发现从较小的政党的角度考虑问题非常困难。 在没有正式训练以传达自己所知道的东西的专业人士中,知识的诅咒是一个非常普遍的事情,但也确实会随着时间,经验和反馈而失去影响。这也是为什么我们在站点点鼓励人们就帖子提供诚实的反馈,这就是为什么我们试图使每个新出版物都更简单,更简化的事情。没有人对诅咒免疫 - 有些人受到它的影响更大。

>
自我出版

的瘟疫

>近年来,自我出版似乎确实脱颖而出。那些不诉诸LeanPub的人像Brandon一样完全独奏。尽管这种方法确实确实加快了过程,并允许专家以令人震惊的快速速度将高质量的内容放在感兴趣的各方的手中,但它还允许更多的错误,不良内容和错别字可以通过。 不幸的是,困扰其他自我出版作家的大多数问题也困扰着这本书。缺乏经验丰富的编辑,似乎没有关于内容,形式甚至语法和句法准确性的指导,这是一种经常弄乱的语言的人。 图书评论:PHP中的实用设计模式

>以为母语者不会犯错误,因此不需要正式编辑类似于例如,一家基于Y校对者的唯一理由是语言X的母语。语言编辑。

结论

作为高级用户,我以前对本书中解释的大多数(如果不是全部)的模式有所了解。但是,我所经历的解释对中级用户的形成且平易近人,尽管我认为不是较低的技能之一。虽然这本书的内容非常好,而布兰登(Brandon)非常擅长在代码中展示该理论的描述,但我觉得这本书整体上太复杂了,对于新手开发人员而言,无法获得任何明显的内容。 在我看来,PHP社区一般都患有一种“缺少链接”综合征,我们拥有绝对的初学者书籍(“这是回声,这是一个函数,这是PHP标签”))))还有像这样的中级书籍,或任何st鱼,琼斯,哈特耶斯和其他人都推出的,但是有一个中间立场仍然没有质量的内容,只能通过良好的老式征服“把我扔进去火法。

>也就是说,如果您是一个中级开发人员,希望在人们周围的人们谈论他们谈论的会议上陷入模式,并从那些尴尬的点点头,但您不理解一件事情 - 一定会得到这本书。如果您是新手,我不建议您购买这个 - 不仅是。首先掌握您的“ Echos”,了解作曲家是什么,然后将您的牙齿沉入此。

实际上,如果您是高级初学者(初学者应该从非常基础的开始),但我仍然对您感兴趣,我会为您提供鼓掌,并提供以下资源以在您深入研究之前进行查看:

>

在可学习的

上,面向对象的php元素

>

>面向对象的php
  • 采用面向对象的PHP:使两支军队互相战斗
  • > Alejandro Gervasio的
  • >很棒 - 阅读这个人曾经写过的所有内容
  • 作曲家
  • MVC
  • 内容,我会给书一个4/5,但是考虑到急需的工作似乎已经接近结束,错字和语言错误(尽管公平,但有一个错别字提交我已经对修复程序进行了污染的github回购)以及我个人认为,很明显缺乏专业指导以及一些奇怪的奇怪之处,这些奇怪的价值会嵌入到新手中的新手中(在各种代码样本中使用数字启动班级名称),i i' m结束最终分数为3/5。
  • php

    >中有关实用设计模式的经常询问的问题

    >在PHP中使用设计模式的好处是什么好处?他们提供了提高代码效率和可维护性的方法。通过使用设计模式,您可以使代码更加灵活,可重复使用和可理解。它们还使开发人员之间的沟通变得更加容易,因为它们为某些解决方案提供了标准术语。

    >装饰器模式如何在php?

    中起作用?通过将这些对象放入特殊包装器对象中,将新行为添加到对象中。在PHP中,可以通过创建包装原始类并提供其他功能的装饰符类来实现。 Decorator类实现与原始类相同的接口,并拥有一个实例。所有对装饰器的呼叫都将转发到原始类,然后添加了其他行为。图案库和样式指南都是有助于保持设计和开发一致性的工具。设计系统是总体结构,其中包括控制设计和开发过程的理念,原理和工具。模式库是设计系统的子集,包括可重复使用的设计元素和组件。另一方面,样式指南是一份文档,概述了视觉设计元素,例如颜色,版式和间距。图案库是实现设计一致性的关键工具。它们提供了一组可重复使用的组件,可以在项目的不同部分中使用。通过使用这些预定义的组件,您可以确保一致使用相同的设计模式,从而导致更具凝聚力和用户友好的设计。

    >

    >重构在设计模式中的作用是什么?重构是修改现有代码以改善其结构而无需更改其功能的过程。在设计模式的背景下,可以使用重构将设计模式实现到现有代码库中。这可以提高代码的可维护性,可读性和经常性能。

    >“ PHP中的实用设计模式”如何帮助理解设计模式? ”提供了PHP中理解和实施设计模式的综合指南。它提供了各种设计模式的实践示例和详细说明,使读者更容易掌握这些概念并将其应用于自己的项目中。

    >设计模式仅适用于PHP?

    不,设计模式不是PHP独有的。它们是软件设计中的概念,可应用于任何面向对象的编程语言。该实现可能因语言而异,但是基本原则保持不变。

    >

    设计模式如何改善开发人员之间的沟通?

    设计模式为软件设计中的某些解决方案提供了标准术语。当开发人员使用这些术语时,他们传达了一个特定的,充分理解的概念,可以减少误解并改善沟通。

    >

    >使用设计模式有任何缺点吗? ,如果不正确使用,它们也可以引入复杂性。过度使用设计模式可能会导致不必要的抽象,并使代码更难理解和维护。因此,只有在他们真正解决一个反复出现的问题时,才明智地使用它们。

    >我如何开始在PHP项目中实现设计模式?

    >您的PHP项目是了解您要解决的问题,并确定这是否是设计模式可以解决的重复问题。确定了合适的设计模式后,您可以在代码中开始实现它。请记住,目标是使您的代码更有效和可维护,因此请始终牢记简单性和清晰度。

以上是图书评论:PHP中的实用设计模式的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
11个最佳PHP URL缩短脚本(免费和高级)11个最佳PHP URL缩短脚本(免费和高级)Mar 03, 2025 am 10:49 AM

长URL(通常用关键字和跟踪参数都混乱)可以阻止访问者。 URL缩短脚本提供了解决方案,创建了简洁的链接,非常适合社交媒体和其他平台。 这些脚本对于单个网站很有价值

在Laravel中使用Flash会话数据在Laravel中使用Flash会话数据Mar 12, 2025 pm 05:08 PM

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

构建具有Laravel后端的React应用程序:第2部分,React构建具有Laravel后端的React应用程序:第2部分,ReactMar 04, 2025 am 09:33 AM

这是有关用Laravel后端构建React应用程序的系列的第二个也是最后一部分。在该系列的第一部分中,我们使用Laravel为基本的产品上市应用程序创建了一个RESTFUL API。在本教程中,我们将成为开发人员

简化的HTTP响应在Laravel测试中模拟了简化的HTTP响应在Laravel测试中模拟了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

php中的卷曲:如何在REST API中使用PHP卷曲扩展php中的卷曲:如何在REST API中使用PHP卷曲扩展Mar 14, 2025 am 11:42 AM

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

在Codecanyon上的12个最佳PHP聊天脚本在Codecanyon上的12个最佳PHP聊天脚本Mar 13, 2025 pm 12:08 PM

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

宣布 2025 年 PHP 形势调查宣布 2025 年 PHP 形势调查Mar 03, 2025 pm 04:20 PM

2025年的PHP景观调查调查了当前的PHP发展趋势。 它探讨了框架用法,部署方法和挑战,旨在为开发人员和企业提供见解。 该调查预计现代PHP Versio的增长

Laravel中的通知Laravel中的通知Mar 04, 2025 am 09:22 AM

在本文中,我们将在Laravel Web框架中探索通知系统。 Laravel中的通知系统使您可以通过不同渠道向用户发送通知。今天,我们将讨论您如何发送通知OV

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)