我已经使用PHP多年,并且非常好地掌握了语言,创建了许多先进且不那么先进的系统,这些系统运行良好.
我遇到的问题是,当我发现需要以前没有学到的东西时,我才会学习.这使我查找处理问题的解决方案和其他代码,因此我将学习一个我以前从未见过的新功能或结构.通过这种方式,我学到了许多更好的技巧(例如学习亚马逊,谷歌或其他大公司推出的课程).
这个问题的主要问题是如果你不知道它存在的话就无法学到东西的概念.例如,我花了几个月的时间来学习empty()
函数,我只是检查字符串长度strlen()
来检查空值.
我现在正在构建越来越大的系统,我开始阅读像highscalability.com这样的博客,并一直在研究MySQL复制和服务器数据以进行扩展.我知道代码结构对于使完整系统工作非常重要.
在阅读了最近关于reddit结构的博客后,它让我怀疑是否有一些标准或"接受的系统".
我已经研究过框架(我使用了Kohana,我后悔了,但我认为PHP框架不适合我)而且我更喜欢自己的函数库而不是框架.
我目前的结构是WordPress,Kohana和我自己的知识之间的混合.
我认为可能有益的方法是:
阅读博客
阅读教程
与他人合作
读一本书
作为一个非常优秀的系统开发人员,"达到更高水平"的最佳方式是什么?
每个想成为PHP程序员的人,总是只接受第一个单词并完全忽略第二个单词.
虽然"编程"比"PHP"更重要,但要成为一名PHP专业人员,首先应该是程序员.
所以,我会投票给最后一本 - 读书.不是PHP,而是一般的编程.Grady Booch,Martin Fowler甚至是老唐纳德Knuth的.
看一下其他语言,比如Java或Python,也会很高兴.不要切换到它们,而是向它们学习.
我更喜欢自己的函数库而不是框架
你将'函数库'和'a'框架'称为不同的概念(好!),那么为什么不尝试一下这个函数库并将函数库转换成框架呢?请注意,这是学习的好方法,但不是拥有适销技能的最佳方式;)
这也是学习错误的好方法,所以在你开始之前你必须做一些研究.
几乎所有框架都有某些功能,这是有原因的.研究它们; 找出他们为什么存在以及他们的变化是什么; 选择您希望在框架中包含哪些实现.
面向对象(这是你编写框架而不是仅使用函数库的关键)
使用模式(检查并开始问自己为什么这么多框架使用Application Controller而不是前端控制器 ......是否有一些平台使用页面控制器?
基本的MVC结构
清理网址
如果您喜欢Ruby,或许您想要一种方法来include
使用类中的模块?
如果你喜欢Asp.NET,你可能想尝试在PHP环境中创建服务器控件吗?
感到宽慰,宽恕是 HTML 的默认设置吗?为什么不验证输出服务器端
我不知道你有什么兴趣所以我会停在那里.
这部分很重要,因为内森是对的:你的工作必须被其他人看到,挑战,批评和纠正.不要把那盏灯放在蒲式耳下面 - 需要看到它; 把它放在谷歌代码或sourceforge或其他东西上,如果人们打算认真看待它,你需要认真对待它; 你需要维护单元测试和回归测试; 你需要使用版本控制; 你需要对它进行评论/* header comment */
,每个文件的顶部都有一个大的,并且每个类及其成员都有有用的doc生成注释.
如果你做了这一切,你可以(在很高的层次上)学习其他平台.作为PHP开发人员,你绝对可以"ding 40".您可以了解单元测试; 关于回归测试.您可以了解有效的文档记录.
保证你的框架会出现"特殊而且可能很糟糕",但你可以从写作中学到很多东西.请记住,框架不是产品; 这是一个旅程...各种各样.
查看PHP和PHP预定义接口的隐藏功能
学习不同的语言.学习比PHP学习曲线更陡峭的语言.任何时候我指出其他语言优于PHP的优点,我被指责为PHP抨击,大多数人显然从来没有真正掌握过另一种高级语言.但是我要承担风险.我建议使用Ruby,Python,Pearl和haXe(作为严格类型的对应物).完成后,尝试将新知识应用于PHP.或者只是远离PHP,以防你不想回去(我认为不太可能发生).
学会处理批评.你对Nathan的帖子的反应非常明显,你还不能处理它.他是绝对正确的.
现在看看我的第一个PHP框架,我不得不说它非常糟糕.当时我认为它很棒(它仍然比我已经看到的许多生产代码更好).它仍有许多缺陷.除非你是一个完全的天才,否则你的第一个框架看起来会非常糟糕,如果你在几年后回顾它们(假设你进化了).
实际上,随着时间的推移,你将创建的任何框架都会变得更糟(假设你不停止进化).因此,您可以使用可用的框架,并将更多精力放在应用程序开发上.如果您使用的框架有局限性,请考虑提供而不是编写另一个PHP框架.
选择编写自己的框架(不仅仅是为了娱乐/学习,而是用于生产部署)的时间点是,当您的要求超出其他框架提供的要求时,而不是当您不喜欢使用框架的想法时.这是一个常见的错误,我自己做了.但现在我可以说,我从中吸取了教训.但是如果你征求意见(我很遗憾当时没有这样做),你会得到这样的答案.
通过使用自己没有编写的代码,您可以学到很多东西.您不仅会接受其他人经过深思熟虑的框架所倡导的概念,而且还学会了高效,灵活,能够在团队中工作并完成工作(同时获得相当不错的结果).
我想你不能认为你比PHP开源项目的每个团队都要好,否则你会问.克服任何年轻开发人员重新发明轮子的顽固本能需求,并逐渐解决尚未解决的问题.
了解组件库和框架之间的区别.既然您认为可以用"自己的函数库"替换框架,那么您可能还没有理解框架的重点.看看依赖倒置,控制反转和依赖注入.
了解软件设计.看看像SOLID和GRASP这样的OO原则.
尝试不同的范例.AOP,函数式编程.使用具有更强面向对象的语言(如Ruby,Objective-C或Smalltalk)来增强您的OO技能.
看看PHP框架,如Flow3,Symfony,PHP点火器和CakePHP.我已经指出了为什么我认为你应该这样做.
正如我的另一个评论所指出的,您应该考虑除RDBM之外的其他存储.SQL和OOP真的不能很好地结合在一起.查看OODBMS,不同的数据库抽象层,键值存储,文档存储(如CouchDB和MongoDB),将缓存服务器分发为内存缓存等.
以下是一些想法:
尝试不同的东西.学习一门新的语言.有时候在学习其他语言的过程中,实际上会让你更好.
贡献一个开源项目.
高可扩展性和PHP/MySQL不是朋友.今天有些技术专门为此而建.node.js和Redis命名一对.
在SO中回答问题.其他人的问题可以让你在盒子外面思考,并且你在尝试帮助的过程中有所改进,而且你也可以为某人做点好事.
[如果我想到其他任何我刚刚醒来喝咖啡的话,会尝试添加这里:D]