对Brandon Savage在PHP中的实用设计模式的评论将包括我对书籍的看法和印象,以及自我出版的方面。非常感谢Brandon给了我评论副本。
设计模式是关于常见问题的常见解决方案。钥匙要点……它们是概念,而不是蓝图;想法,未完成设计。
…他们为原本困难的情况增添了清晰度。
- Brandon Savage,PHP中的实用设计模式
Brandon Savage的“ PHP中实用设计模式”
- 为理解和实施PHP中的设计模式提供了综合指南,重点是针对常见问题的共同解决方案。该书涵盖了广泛的模式,每个模式都用潜在的代码实现进行了解释,这使其成为中级开发人员的宝贵资源。
- > >对本书的内容受到赞扬,评论指出了一些缺点。其中包括缺乏对某些模式的解释,例如注册表模式,以及读者熟悉高级概念和第三方内容的假设。该评论还批评了本书在MVC应用程序中的模型方法,并且缺乏针对域模型模式的实际示例。
- >评论重点介绍了本书缺乏专业指导,语言错误和偶尔在代码样本中的奇数的挑战。尽管存在这些问题,但建议该书适用于希望研究设计模式的中级开发人员,但对于需要首先掌握基本概念的初学者。
- content
>如果我在Dreyfus模型术语中表达了重要的事情,他声称这本书将在那里将新手变成一个胜任的级别的开发人员,而不会使他们遭受高级初学者的错误,而实际上,这种学习方法并非完全可能 - 那是可能的 - 只是人类知识获取过程的工作原理。
>从TOC中可能不会过分明显,因此本书中解释的模式是:
>- (摘要)工厂模式
- singleton模式
- 构建器模式
- 装饰器图案
- 适配器模式
- 外观模式
- 策略模式
- 介质模式
- 观察者模式
- 责任链模式
- 迭代器模式
- 复合模式
- MVC模式
- 域模型模式
- 活动记录模式
- 前控制器模式
[…],例如,注册表模式(本书中未涵盖)…
在不同的缓存示例(APC和memcache)的示例中实现了该模式,并且两者都通过工厂产生,该工厂都注入了任何服务需要缓存组件中。
> 另一方面,我绝对喜欢复合模式的解释及其在非常有趣的树示例上的演示 - 作者构建了一棵复合树,具有任意数量的嵌套节点级别,该级别非常适用于菜单构建,层次结构,以及更多 - 我对装饰图案的解释感到特别兴奋。它是以一种非常平易近人的方式完成的,并且以良好的可用示例进行。尤其是这种模式是我一直很难在被问到时用蓝色解释的人,而且我还没有找到比本书更好的细分。
>忽略了模型
在本书的一个实例中,布兰登说,模型是MVC应用程序中最重的举升机,其中包含所有业务逻辑和验证代码。这是我无法接受的陈述 - 我可以想到一个不正确的例子:拉拉维尔(Laravel)。随着Laravel 5的出现并添加表格请求,这些模型将增长更轻。
>
“在整本书中,布兰登在没有链接到它的情况下(四个帮派)提到了高级概念(ORM,继承,依赖注入)和第三方内容,假设读者熟悉这一切。尤其是四个场合提到了四个团伙,并且至少可以与设计模式的链接使用 - 否则“新手”和“高级初学者”读者只会在混乱中浏览一下句子。创建好的模型是任何开发人员铲球最复杂的任务之一。 长期以来,Zend Framework文档认为没有Zend_model类,因为创建模型是应用程序开发过程的大部分。 要创建zend_model将是假设每个人都可以或想使用相同的模型结构,这是不可能的,这是我本章中未包含任何代码的相同原因。 >这确实有意义,但以最简单的方式体现了价值,网关和存储对象,这对首次被引入域模型模式的人们非常有益。我认为,在本书中,域模型模式过于忽视,并且太过理论上了。
知识的诅咒
在其他情况下,段落结构的编写方式远远超出了新手对中级用户的理解水平:
>这是一个古老的问题,许多开发人员一直都在努力:如果我努力颠倒依赖关系而不是在课堂内创建对象,那么我该如何创建在运行时需要的依赖项,可以一定要注入?
>这不是读者所消耗的水平,他们需要这本书熟悉模式。完全了解这句话的读者可能已经完全熟悉了书中的所有模式,从而使真正的目标受众质疑。我相信这是由于萨维奇先生遭受了所谓的“知识诅咒”的困扰。
wikipedia将其定义为:
自我出版知识的诅咒是一种认知偏见,它导致更有信息的各方发现从较小的政党的角度考虑问题非常困难。 在没有正式训练以传达自己所知道的东西的专业人士中,知识的诅咒是一个非常普遍的事情,但也确实会随着时间,经验和反馈而失去影响。这也是为什么我们在站点点鼓励人们就帖子提供诚实的反馈,这就是为什么我们试图使每个新出版物都更简单,更简化的事情。没有人对诅咒免疫 - 有些人受到它的影响更大。
>
的瘟疫
>近年来,自我出版似乎确实脱颖而出。那些不诉诸LeanPub的人像Brandon一样完全独奏。尽管这种方法确实确实加快了过程,并允许专家以令人震惊的快速速度将高质量的内容放在感兴趣的各方的手中,但它还允许更多的错误,不良内容和错别字可以通过。
不幸的是,困扰其他自我出版作家的大多数问题也困扰着这本书。缺乏经验丰富的编辑,似乎没有关于内容,形式甚至语法和句法准确性的指导,这是一种经常弄乱的语言的人。
结论
作为高级用户,我以前对本书中解释的大多数(如果不是全部)的模式有所了解。但是,我所经历的解释对中级用户的形成且平易近人,尽管我认为不是较低的技能之一。虽然这本书的内容非常好,而布兰登(Brandon)非常擅长在代码中展示该理论的描述,但我觉得这本书整体上太复杂了,对于新手开发人员而言,无法获得任何明显的内容。 在我看来,PHP社区一般都患有一种“缺少链接”综合征,我们拥有绝对的初学者书籍(“这是回声,这是一个函数,这是PHP标签”))))还有像这样的中级书籍,或任何st鱼,琼斯,哈特耶斯和其他人都推出的,但是有一个中间立场仍然没有质量的内容,只能通过良好的老式征服“把我扔进去火法。>也就是说,如果您是一个中级开发人员,希望在人们周围的人们谈论他们谈论的会议上陷入模式,并从那些尴尬的点点头,但您不理解一件事情 - 一定会得到这本书。如果您是新手,我不建议您购买这个 - 不仅是。首先掌握您的“ Echos”,了解作曲家是什么,然后将您的牙齿沉入此。
实际上,如果您是高级初学者(初学者应该从非常基础的开始),但我仍然对您感兴趣,我会为您提供鼓掌,并提供以下资源以在您深入研究之前进行查看:
>在可学习的
上,面向对象的php元素>
>面向对象的php- 采用面向对象的PHP:使两支军队互相战斗 > Alejandro Gervasio的
- >很棒 - 阅读这个人曾经写过的所有内容 作曲家
- MVC
- 内容,我会给书一个4/5,但是考虑到急需的工作似乎已经接近结束,错字和语言错误(尽管公平,但有一个错别字提交我已经对修复程序进行了污染的github回购)以及我个人认为,很明显缺乏专业指导以及一些奇怪的奇怪之处,这些奇怪的价值会嵌入到新手中的新手中(在各种代码样本中使用数字启动班级名称),i i' m结束最终分数为3/5。
php
>中有关实用设计模式的经常询问的问题>在PHP中使用设计模式的好处是什么好处?他们提供了提高代码效率和可维护性的方法。通过使用设计模式,您可以使代码更加灵活,可重复使用和可理解。它们还使开发人员之间的沟通变得更加容易,因为它们为某些解决方案提供了标准术语。
>装饰器模式如何在php?
>
>重构在设计模式中的作用是什么?重构是修改现有代码以改善其结构而无需更改其功能的过程。在设计模式的背景下,可以使用重构将设计模式实现到现有代码库中。这可以提高代码的可维护性,可读性和经常性能。>“ PHP中的实用设计模式”如何帮助理解设计模式? ”提供了PHP中理解和实施设计模式的综合指南。它提供了各种设计模式的实践示例和详细说明,使读者更容易掌握这些概念并将其应用于自己的项目中。>设计模式仅适用于PHP?
不,设计模式不是PHP独有的。它们是软件设计中的概念,可应用于任何面向对象的编程语言。该实现可能因语言而异,但是基本原则保持不变。>
设计模式如何改善开发人员之间的沟通?设计模式为软件设计中的某些解决方案提供了标准术语。当开发人员使用这些术语时,他们传达了一个特定的,充分理解的概念,可以减少误解并改善沟通。
>>使用设计模式有任何缺点吗? ,如果不正确使用,它们也可以引入复杂性。过度使用设计模式可能会导致不必要的抽象,并使代码更难理解和维护。因此,只有在他们真正解决一个反复出现的问题时,才明智地使用它们。
>您的PHP项目是了解您要解决的问题,并确定这是否是设计模式可以解决的重复问题。确定了合适的设计模式后,您可以在代码中开始实现它。请记住,目标是使您的代码更有效和可维护,因此请始终牢记简单性和清晰度。
以上是图书评论:PHP中的实用设计模式的详细内容。更多信息请关注PHP中文网其他相关文章!

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

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

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

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

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

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

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

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


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

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

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

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

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)