如何进一步增加我对PHP的“先进”知识? (快速)[关闭
-
05-10-2019 - |
题
我已经与PHP合作多年了,并且对该语言有很好的掌握,创造了许多高级且不那么先进的系统,它们运行良好。
我遇到的问题是,我只有在发现以前从未学到的东西时就会学习。这使我查找解决问题的解决方案和其他代码,因此我将了解我以前从未见过的新功能或结构。通过这种方式,我已经学到了许多更好的技术(例如,亚马逊,Google或其他主要公司开设的课程)。
这样做的主要问题是,如果您不知道它的存在,那么无法学习某些东西的概念。例如,我花了几个月的编程才能了解 empty()
功能,我只会使用 strlen()
检查空值。
我现在正在构建越来越大的系统,并且我开始阅读诸如HighScalibality.com之类的博客,并正在研究MySQL复制和服务器数据以进行扩展。我知道您的代码结构对于使完整系统的工作非常重要。
在阅读了有关Reddit结构的最新博客之后,我质疑那里是否有一些标准或“接受的系统”。
我已经研究了框架(我已经使用了kohana,我对此感到遗憾,但认为PHP框架不适合我),我更喜欢自己的功能库,而不是拥有框架。
我目前的结构是WordPress,Kohana和我自己的知识之间的混合。
我认为可能有益的方式是:
- 阅读博客
- 阅读教程
- 与其他人一起工作
- 读一本书
成为一个非常好的系统开发人员的水平是什么最好的方法?
解决方案
每个想成为PHP程序员的人,总是只采用第一个单词,完全忽略了第二个单词。
虽然“编程”比“ PHP”更重要,但要成为PHP专业人士,但首先应该成为程序员。
因此,我将投票给最后一本 - 阅读书籍。不是在PHP上,而是在编程上。 Grady Booch, 马丁·福勒甚至旧的 唐纳德·诺斯(Donald Knuth)的。
看一些其他语言,例如Java或Python也很高兴。不是要切换到他们,而是向他们学习。
其他提示
我更喜欢自己的功能库,而不是拥有一个框架
您将“函数库”和“一个框架”称为不同的概念(好!),那么为什么不尝试稍微提高赌注并将该功能库转换为框架呢?请注意,这是一种学习的好方法,但不是拥有可销售技能的最佳方法;)
这也是学习的好方法 错误的 因此,在开始之前,您必须进行一些研究。
“必须有”功能
几乎所有框架都有某些功能,这是有原因的。研究他们;查出 为什么 他们在场以及他们的变化是什么;选择您希望在框架中包含哪些实现。
- 面向对象(这是为什么要编写一个框架而不是仅使用功能库的关键)
- 使用图案(查看并开始问自己为什么有这么多框架使用 应用程序控制器 而不是 前控制器...并且有一些使用的平台 页面控制器?
- 基本的 MVC结构
- 干净的URL
您想理解和模拟的非PHP平台的功能
- 如果您喜欢Ruby,也许您想采取一种方法
include
课堂中的模块? - 如果您喜欢ASP.NET,也许您想尝试创建 服务器控件 在PHP环境中?
- 不高兴 宽恕是默认 与html?为什么不验证输出服务器端
我不知道您有什么兴趣,所以我会在那里停留。
发布它!
这部分很重要,因为 内森是对的: :必须看到,挑战,批评和纠正您的工作。不要将那盏灯留在蒲式耳下 - 需要看到;将其放在Google Code或SourceForge之上,如果人们要认真考虑它,您需要认真对待它;您需要维护单位测试和回归测试;您需要使用版本控制;您需要很好地评论,很大 /* header comment */
在每个文件的顶部以及每个班级及其成员的有用DOC生成注释。
概括
如果您这样做,您可以(在高水平)上了解其他平台。您绝对可以作为PHP开发人员“丁40”。您可以了解单位测试;关于回归测试。您可以有效地了解有关记录的信息。
保证您的框架将出现“特质,可能很烂”,但是您可以通过编写它来学到很多东西。请记住,该框架不是产品;这是一段旅程。
- 调查 PHP的隐藏功能 和 PHP的预定义接口
- 学习不同的语言。学习比PHP更陡峭的学习曲线的语言。每当我指出其他语言比PHP的优势时,我都会被指控PHP抨击,大多数人显然从未真正掌握过另一种高级语言。但是我要冒险。我建议Ruby,Python,Pearl和 哈克斯 (作为严格键入的对手)。完成此操作后,尝试将新知识应用于PHP。或者只是离开PHP,以防您不想回去(我认为这不太可能发生)。
- 学会处理骨炎。您对内森(Nathan)帖子的反应很明显,您还无法处理。他是绝对正确的。
- 现在看我的第一个PHP框架,我不得不说这很糟糕。当时我认为这很棒(而且它仍然比我已经看到的许多生产代码要好)。尽管如此,它仍然有很多缺陷。除非您是个天才,否则您的第一个框架只会在几年后回顾一下(假设您进化)。
- 实际上,随着时间的流逝,您将创建的任何框架看起来都会更糟(假设您不停止发展)。因此,您可能会使用可用的框架,并更多地专注于应用程序开发。如果您使用的框架有局限性,请考虑贡献而不是编写另一个PHP框架。
- 选择编写自己的框架(不仅是为了娱乐/学习,而是生产部署)的时间点是,您的需求超过了其他框架所提供的,而不是当您不喜欢与之合作的想法时。这是一个普遍的错误,我自己做过。但是现在我可以说,我已经从中学到了。但是,如果您要求提供建议(不幸的是,当时我没有这样做),您会得到这样的答案。
- 通过使用您没有写自己的代码,您会学到很多东西。您不仅可以通过框架提倡的其他人进行了很多思考,而且还学会了富有成效,灵活,能够在团队中工作并完成工作(同时获得相当不错的结果)。
- 我想您真的不能认为您比那里的PHP开源项目的每个团队都更好,否则您会问。克服顽固的本能需求,以重塑任何年轻开发人员所拥有的方向盘,并长大后解决尚未解决的问题。
- 了解组件库和框架之间的区别是什么。由于您认为可以用“自己的功能库”替换框架,因此您可能还没有理解,框架的意义是什么。看一下 依赖性反转, 控制反转 和 依赖注射.
- 了解软件设计。看看像原则一样 坚硬的 和 抓牢.
- 尝试不同的范例。 AOP,功能编程。使用具有更强对象取向的语言(例如Ruby,Objective-C或SmallTalk)来提高您的OO技能。
- 查看PHP框架,例如Flow3,Symfony,PHP IGNITER和CAKEPHP。我已经指出了为什么我认为您应该这样做。
- 正如我的另一条评论中指出的那样,您应该考虑除RDBMS以外的其他储藏室。 SQL和OOP真的不顺利。看看OODBM,不同的数据库抽象层,键值商店,诸如CouchDB和MongoDB之类的文档商店,将缓存服务器分配为memcache等。
这里有一些想法:
尝试不同的事情。学习一门新的语言。有时在学习其他语言的过程中,实际上会使您在两者之间变得更好。
为开源项目做出贡献。
高可扩展性和PHP/MySQL不是朋友。如今,有一些技术是为此而建立的。 node.js和redis命名一对。回答问题。别人的问题会让您从框开出来,并在尝试帮助的过程中有所改善,并且您也对某人做一些好事。
如果我想到其他任何东西,我只是醒来喝咖啡:D
学会以不同的方式做自己已经知道的事情。例子:
- 用不同的语言
- 在不同的平台上
- 并行/分布式
- 通过一个框架(是的,您决定它们“不适合您” - 也许尝试不同的框架,有时它们彼此非常不同)
简单的: 做到. 。需求会让您学习。找到一种参与日益高级项目的方法,无论是商业还是开源。没有其他方法可以真正学习一些东西。
我将加入讨论委员会,并尝试解决其他人的问题。有时,有一些挑战性的问题迫使您进行一些研究。如果您无法回答,则可以等待一个可以学习的人。
至于框架,请向他们学习。我也自己滚动,因为那里的大多数框架可能会很慢。虽然对于大多数网站来说足够快。
我还建议查看Facebook的PHP库。他们在那里做一些有趣的事情。
您能做的最好的是购买一本书 有效的算法. 。在每个计算机科学系学生的生活中,他/她必须研究这些时间。讨论/解决的问题是您可能面临的几乎所有现实世界问题的抽象。
除了阅读有关他人如何做的博客之外,它完全很好,因为它可以帮助您了解如何实际使用(甚至实施)有效算法的原则。
问候。
与其他开发人员合作不足。我特别知道3个开发人员,每天与之合作的2个开发人员,他们的知识使我震惊。我问他们对我所做的一切的看法,不是因为我第二次猜测自己的想法,而是我想听听其他想法的更多意见,尤其是我尊重开发人员的人。我从这些人那里学到的比任何其他方式都学到更多。如果您无法访问其他高级开发人员,那么一定会在SO或其他开发论坛上发布并询问人们的意见,请询问人们如何处理特定的项目/问题。除非看到它们被使用,否则通常不会学习新技术 /方法 /功能(如果您不知道它的存在,怎么知道该怎么办?)
另外,如前所述,参加OS应用程序。转到SourceForge并找到需要开发人员的项目。或下载应用程序并尝试为其编写插件(我正在为Invision 3.0 ATM编写插件并学习一些内容。)
希望有帮助。
阅读别人的代码。您现在有自己的库,但是在阅读其他应用程序的来源时,您可能会得到一些启蒙。然后问自己“为什么”。成为博客作者,而不是读者。同样,强调程序员而不是语言。而是看已经解决问题并尝试用自己的知识来复制它们的解决方案。祝你好运,玩得开心!
查看其他程序员代码的方法绝对是学习“好”或“坏”实践的好方法。阅读其他代码后,您会为良好的代码开发“感觉”。
我绝对推荐诸如Zend Framework,Symfony,Cakephp或Agavi之类的框架,因为很多贡献者都看着该代码,并不断地将它们朝向“理想”解决方案(当然永远不会达到...);框架提供的决定,开发自己的课程。
在如此长的PHP背景下,您可以考虑为开源框架做出贡献。与其他开发人员的讨论使您以更快的方式前进。
向他人展示您的代码并要求建设性反馈具有相同的效果。在与他人的技能基准之前,您永远不会知道自己的表现。总是以建设性的方式。在为开源框架做出贡献时,这将是一个自然的过程。 )
您应该使用示例,在扩展它们时与它们一起工作,这样您就可以通过使它们更有功能并提供更多功能来学习如何扩展示例。
虽然,最好创建您到目前为止在PHP中学到的东西。要练习更多,您应该创建类似的预订系统等。迟早您将在PHP学习更多时学习更多的扩展,从而使您的发展变得更好。
您可以询问您的公司是否可以向您支付Zend PHP认证考试。为此考试学习将使您了解PHP,并通过阅读大量文档,Zend学习指南以及通过模拟考试的培训来训练。这是一种非常有效的改进方法,在简历上看起来还不错。
“我自己的函数库” ==“一个[特质和可能很烂]框架”。
我建议学习 对称 因为开发人员似乎一贯努力根据“最佳”实践做所有事情……但是您可能可以从任何流行的框架中学到很多东西。
不要写自己的框架。请。