如何进一步提高我对 PHP 的“高级”知识? (快速)

我已经使用 PHP 很多年了,对这门语言有了很好的掌握,创建了许多高级和不太高级的系统,它们都运行得很好。

我遇到的问题是,我只有在发现需要一些我以前没有学过的东西时才会学习。这使我查找解决方案和其他处理这个问题的代码,因此我将学习一个新的函数或结构,这是我以前从未见过的。正是通过这种方式,我学到了许多更好的技巧(比如学习亚马逊、谷歌或其他大公司开设的课程)。

这样做的主要问题在于,如果你不知道某样东西的存在,你就无法学习它。例如,我花了几个月的编程时间来学习 empty()函数,我只是使用 strlen()检查字符串长度以检查空值。

我现在正在构建越来越大的系统,我已经开始阅读像 highscalability.com 这样的博客,并且一直在研究 MySQL 复制和服务器数据的可伸缩性。我知道代码的结构对于整个系统的工作非常重要。

在最近阅读了一篇关于 reddit 结构的博客后,我开始怀疑是否存在一些标准或“可接受的系统”。

我研究过框架(我使用过 Kohana,我很后悔,但是我认为 PHP 框架不适合我) ,我更喜欢我自己的函数库,而不是一个框架。

我现在的结构是 WordPress,Kohana 和我自己的知识的混合体。

我认为有潜在益处的方法是:

  • 读博客
  • 阅读教程
  • 和别人合作
  • 看看书

什么是“达到下一个级别”的最佳方法,成为一个非常好的系统开发人员?

9886 次浏览

学会用不同的方式去做你已经知道的事情。例如:

  • 用另一种语言
  • 在另一个平台上
  • 并行/分布式
  • 通过一个框架(是的,你认为它们“不适合你”——也许可以尝试不同的框架,它们有时彼此非常不同)

每个想成为 PHP 程序员的人,总是只看第一个词,完全忽略第二个词。

虽然“编程”比“ PHP”重要得多,但要成为一名 PHP 专业人士,首先应该是一名程序员。

所以,我会投票给最后一本,读书。不是关于 PHP,而是一般的编程。格雷迪 · 布奇型,Martin Fowler型,甚至是旧的 Donald Knuth型。
看看其他语言也不错,比如 Java 或 Python。不是转向他们,而是向他们学习。

您应该使用示例,在展开示例时使用它们,这样您将学习如何通过使示例更具功能性来展开示例,并提供更多的特性。

尽管如此,创建一些到目前为止在 PHP 中学到的东西还是不错的。为了更多地练习,你应该创建一些东西,比如,预订系统等等。当你更多地学习 PHP 的时候,你迟早会学到更多的东西,这将使你的开发变得更好。

以下是一些想法:

  • 尝试不同的方法。学一门新语言。有时候在学习其他语言的过程中,实际上会使你在这两方面都做得更好。

  • 参与一个开源项目。

  • 高可伸缩性和 PHP/MySQL 不是朋友。现在有些技术就是为此而生的。Node.js 和 Redis 等等。

  • 用 SO 回答问题。别人的问题可以让你跳出固有思维模式,改善你试图帮助别人的过程,你也可以对别人做一些好事。

  • [会尝试在这里添加,如果我想到任何其他我刚刚醒来喝咖啡: D ]

你能做的最好的就是在 有效的算法上买一本书。在每个计算机科学专业的学生的生活中,总有一天他/她必须学习这些知识。所讨论/解决的问题几乎都是你可能面对的任何现实世界问题的抽象。

此外,阅读关于其他人是如何做到这一点的博客是完全没有问题的,因为它有助于您理解如何实际使用(甚至可能实现)高效算法的原则。

问候。

“我自己的函数库”= = “一个[特殊的,可能很糟糕的]框架”。

我建议学习 Symfony,因为开发人员似乎总是努力按照“最佳”实践来做所有的事情... ... 但是您可以从任何流行的框架中学到很多东西。

请不要编写自己的框架。

您可以询问您的公司是否可以支付您一个 Zend PHP 认证考试。学习这个考试将迫使您熟悉 PHP,并通过阅读大量的文档、 Zend 学习指南和模拟考试进行培训。这是一种非常有效的改进方式,而且在简历上看起来也相当不错。

我会加入讨论区,尝试解决其他人的问题。有时候会有一些非常具有挑战性的问题迫使你去做一些研究。如果你不能回答这个问题,你可以等有能力的人来回答,然后再学习。

至于框架,向它们学习。我也会自己动手,因为大多数框架都可能相当慢。虽然对于大多数网站来说已经足够快了。

我还建议你看看 Facebook 的 PHP 库,里面有一些有趣的东西。

与其他开发人员一起工作还远远不够。我特别认识3个开发人员,其中2个是我每天一起工作的人,他们的知识让我大吃一惊。我做任何事情都会询问他们的意见,不是因为我怀疑自己的想法,而是因为我更想听到其他的想法,尤其是从我尊敬的开发人员那里。我从这些人身上学到的比其他任何方法都多。如果你无法接触到其他高级开发人员,那么一定要在 SO 或其他开发论坛上发帖,征求人们的意见,询问人们他们将如何处理特定的项目/问题。你通常不会学习新的技术/方法/函数,除非你看到它们被使用(如果你不知道它的存在,你怎么知道要寻找什么?)

此外,如前所述,参加一个操作系统应用程序的一部分。访问 source ceforge,找到一个需要开发人员的项目。或者下载一个应用程序并尝试为它编写一个插件(我正在为 Invision 3.0 atm 编写一个插件并学习一些东西)

希望能帮上忙。

也许你应该再看看框架,我建议你看看 Zend 框架,因为它更像是一个组件库,你可以根据自己的需要使用它,并不像其他框架那样强加一个你必须遵循的严格结构,尽管它确实建议了一个(相当理智的 imho)项目布局。一个好的起点是 在最深处生存下来

有些事情你还没有提到,这些事情可能会被证明是有用的(特别是在大型项目中) :

读别人的代码。现在您已经有了自己的库,但是在阅读其他应用程序的源代码时,您可能会得到一些启发。然后问问你自己为什么。成为博客作者,而不是读者。此外,强调程序员多于语言。而是看看已经解决了问题的解决方案,然后试着用自己的知识复制它们。祝你好运,玩得开心!

  1. 看看 PHP 的隐藏特性PHP 的预定义接口
  2. 学习不同的语言。学习比 PHP 有更陡峭学习曲线的语言。每当我指出其他语言相对于 PHP 的优势时,我总是被指责抨击 PHP,大多数人显然从未真正掌握过另一种高级语言。但我要冒这个险。我建议使用 Ruby、 Python、 Pearl 和 哈克斯(作为严格类型的对应物)。完成后,尝试将您的新知识应用到 PHP 中。或者只是远离 PHP,以防您不想回去(我认为这不太可能发生)。
  3. 学会处理批评。你对 Nathan 的帖子的反应表明你还不能接受。他完全正确。
    • 现在看看我的第一个 PHP 框架,我不得不说它相当糟糕。当时我认为它非常棒(它仍然比我已经看到部署的许多产品代码要好)。尽管如此,它还是有很多缺陷。除非你是个天才,否则如果你几年后再回头看看你的第一个框架(假设你进化了) ,它们看起来会很糟糕。
    • 实际上,随着时间的推移,您将创建的任何框架看起来都会变得更糟(假设您没有停止进化)。出于这个原因,您不妨使用可用的框架,并更多地关注应用程序开发。如果您使用的框架有局限性,请考虑贡献而不是编写另一个 PHP 框架。
    • 选择编写自己的框架(不仅仅是为了娱乐/学习,而是为了生产部署)的关键在于你的需求超过了其他框架的提供,而不是你不喜欢使用框架的想法。这是个常见的错误,我自己也犯过。但现在我可以说,我从中吸取了教训。但是如果你寻求建议(不幸的是,我当时没有这样做) ,你会得到这样的答案。
    • 通过使用不是您自己编写的代码,您可以学到很多东西。你不仅学到了别人花了很多心思提出的框架概念,而且还学会了高效、灵活、能够在团队中工作并完成工作(同时获得相当好的结果)。
    • 我想您不会真的认为自己比 PHP 开源项目的每个团队都优秀,否则您会问。克服任何年轻开发人员都需要重新发明轮子的固执本能需求,长大后解决没有人解决过的问题。
  4. 了解组件库和框架之间的区别。因为您认为可以用“自己的函数库”替换框架,所以可能还没有理解框架的意义。看看 依赖关系反转控制反转依赖注入
  5. 了解软件设计,了解面向对象原则,如 很可靠抓住
  6. 尝试不同的模式。AOP,函数式编程。使用更强的面向对象语言(如 Ruby、 Objective-C 或 Smalltalk)来提高面向对象技能。
  7. 看看 PHP 框架,如 Flow3、 Symfony、 PHP 点火器和 CakePHP。我已经指出了为什么我认为你应该这样做。
  8. 正如我在另一篇评论中指出的,您应该考虑 RDBM 以外的其他存储。SQL 和 OOP 真的不能很好地结合在一起。看看 OODBMS,不同的数据库抽象层,键值存储,文档存储,如 CouchDB 和 MongoDB,分布缓存服务器作为 memcache 等。

我更喜欢我自己的函数库 而不是有一个框架

您将“函数库”和“ a”框架称为不同的概念(很好!)那么为什么不试着增加一点赌注,把函数库变成一个框架呢?请注意,这是一种很好的学习方法,但不是获得适销对路技能的最佳途径;)

这也是学习 错了的一个很好的方法,所以在你开始之前你必须做一些研究。

“必备”功能

几乎所有框架都有某些特性,这是有原因的。研究它们; 找出它们存在的 为什么以及它们的变体; 选择您希望在框架中包含的实现。

您希望了解和仿真的非 PHP 平台的特性

我不知道你对什么感兴趣,所以我就到此为止了。

发表吧!

这一部分很重要,因为 Nathan 是对的: 你的工作必须被别人看到、挑战、批评和纠正。不要小题大做——它需要被看到; 把它放在谷歌代码或者 source 锻造之类的东西上,如果人们想认真地看它,你需要认真对待它; 你需要维护单元测试和回归测试; 你需要使用版本控制; 你需要很好地注释它,在每个文件的顶部放一个大的 /* header comment */,并为每个类和其成员生成有用的文档注释。

摘要

如果您完成了所有这些工作,您就可以(在较高的层次上)了解其他平台。作为一个 PHP 开发人员,您完全可以“叮40”。你可以学习单元测试和回归测试测试。您可以有效地学习如何编写文档。

保证你的框架会变得“特殊而且可能很糟糕”,但是你可以从编写它中学到很多东西。只要记住,框架不是一个产品; 它是一段旅程... ... 各种各样的旅程。

查看其他程序员代码的方法无疑是学习“好”或“坏”实践的好方法。在阅读其他代码之后,你会对好的代码产生一种“感觉”。

我绝对推荐像 Zend 框架、 symfony、 CakePHP 或 Agavi 这样的框架,因为很多贡献者都会关注这些代码,并不断地将它们开发成“理想的”解决方案(当然这永远不会实现... ...) ; 你仍然可以决定开发自己的类,而不是框架提供的类... ..。

有了这么长的 PHP 背景,您可以考虑为开源框架做贡献。与其他开发人员的讨论可以使您以更快的方式向前发展。

将你的代码展示给别人并征求建设性的反馈也有同样的效果。你永远不会知道你有多好,直到你和别人一起测试你的技能。总是以建设性的态度。对于开源框架来说,这是一个很自然的过程。;)

简单: 动手吧。需求会让你学习。找到一种方法来参与日益高级的项目,无论是商业项目还是开源项目。没有其他方法可以让你真正学到东西。