图书评论:PHP中的实用设计模式
对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中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

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

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

PHP8.1中的枚举功能通过定义命名常量增强了代码的清晰度和类型安全性。1)枚举可以是整数、字符串或对象,提高了代码可读性和类型安全性。2)枚举基于类,支持面向对象特性,如遍历和反射。3)枚举可用于比较和赋值,确保类型安全。4)枚举支持添加方法,实现复杂逻辑。5)严格类型检查和错误处理可避免常见错误。6)枚举减少魔法值,提升可维护性,但需注意性能优化。

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。
