## 有些话想说 现在很多初学者刚学某一门语言就找框架学,而不了解该语言原生的一些功能写法。 我认为,如果在时间允许的条件下,先行学习了解语言原生特色和功能,编写一两个小项目,之后的发展会好于直接上手框架。 就我个人经历而言,两年前刚毕业,找的第一份工作是在一家小公司。只有我一个程序员,开发的是一个O2O平台。 那时候的我对ASP.NET的了解要多于PHP,毕竟在学校学的PHP只是基础中的基础中的基础……但是我还是选择了PHP,原因就是绝大多数中小型网站甚至一些大型平台都是PHP开发。 做软件开发的都懂,没有一个项目时间是不紧的,都是急着要。那时候我考虑过是不是要选一个PHP框架来开发这个项目。 但是想到我对这些个框架一无所知,与其花费大量时间去学习查找框架的资料,还不如就原生PHP开发得了。 和很多初学者一样,从index.php、common.php、conn.php……这些文件开始。那时候也听说过MVC这个东西,但具体也不清楚是什么。开发期间,我研究了一些用框架开发的系统源码,朦朦胧胧地了解MVC。然后在这个项目里使用上了这个有些问题的所谓的MVC模式。最终开发完成,之后很长时间一直都稳定运行。(当然这个项目现在已经不存在了) 之后我总结了之前原生PHP项目开发经验,参考其它框架、Java、ASP.NET等平台,开发出了YurunPHP的雏形。经过几个项目的考验,不断修复BUG和新增功能。目前,使用YurunPHP开发的系统有:O2O平台、门户网站、企业应用。目前的霸气吗软件也是使用YurunPHP早期框架搭建。 我偶尔会在几个PHP群里解答一些问题,也因为工作关系接触过一些刚学PHP的人。绝大多数人,学习PHP、Java或者其它语言,都是直接入门XX框架。如果让他们要换一个框架,或者用原生PHP开发一个小应用,肯定突然就懵了。甚至问起框架里某个功能的实现原理也是毫不清楚。 用框架开发项目很爽?没错,框架是为了让开发更合理、更快速、维护更方便而设计出来的。 即使我们不使用框架开发,也会有很多代码是共用的,不需要重复编写。 比如数据库连接,只要不是初学者,都不会把数据库地址、用户名、密码在每个文件里重复写。而是创建一个数据库配置文件,这样写的好处是更换数据库,你只需要在一个文件里修改,降低维护成本。这也是可以称之为框架的,一个简单的框架。 每个框架都有他的思路在里面,并不是要功能越多越好,框架里很多功能我们甚至都用不到。用框架写代码很爽很快,但一般来讲框架功能越多,运行效率越低。 不过,对于现在的硬件性能来讲,这点运行效率可以忽略不计,毕竟更多的性能瓶颈是在数据库查询上。而且时间就是金钱啊,现在很多企业都情愿花钱升级硬件,多招几个人,让应用早些上线。 我写了这么多就是想说,框架不是万能的,不要抱死在一个框架、一个语言上。框架、语言都是一种工具,为了解决问题而存在的工具。 在开发的时候,应当多考虑功能实现的同时,让代码可以重用。只要写一遍的不要写第二遍,能用配置的尽量用配置。 应该想方设法让自己偷懒,如何让自己开发时候写的代码更少更快,如何在维护时更方便,修改后不容易影响到其它功能。 如果你认为自己可以,那就尝试自己开发一个框架,无关乎什么语言,不需要多强大。只要你试着去做,并且坚持完成,肯定能学到很多新东西! > 我不会那套理论的花花东西,上面都是个人经验之谈,仅供参考!请勿轻易模仿! ## 常见问题 1. 学PHP有没有前途? > 目前来讲,PHP很有前途,很多Web开发都用到PHP。 绝大多数中小网站、微信开发都是使用PHP开发。 绝大多数论坛都是使用基于PHP开发的Discuz。 绝大多数博客都是使用基于PHP开发的WordPress和Z-Blog。 …… 2. PHP、Java、.Net哪个好? > 存在就是合理的,它们有各自使用最广的场景。 3. 哪个PHP框架最好? > “最”字问题是没有答案的,还是一句话:存在就是合理的。 国际上前十大最受欢迎的PHP框架: 1、Laravel 2、Phalcon 3、Symfony 4、Yii 5、CodeIgniter 6、CakePHP 7、Aura 8、Zend Framework 9、Kohana 10、Slim framework 我们国内用的最多的是ThinkPHP。 4. 怎么学编程? > 目前常见学习方法:培训机构、视频教程、书籍、实战开发。 培训机构和视频教程就有点浪费时间了,也不要指望培训机构帮你找工作! 我最推崇的是实战开发为主,其它方式为辅。 开发时候有问题就查,很快就上手了,而且很有成就感。 学会使用搜索引擎很重要!软件开发行业技术更新快,没有自学能力,不会用搜索引擎的必然会被淘汰! 5. 为什么问问题人家不回答我? > 有很多原因,提问时应该注意下面几点: 1、不要使用“在吗?”、“在?”、“有人吗?”等开场白。直接开门见山! 2、注意语气,人家只是忙里抽空来回答个问题。没收你钱,没必要无偿教到你会,更不会无偿帮你写代码。 3、要简明扼要描述清楚问题,最好可以配个图。 4、不常见的问题可能别人也不会,或者没有会的人看到。 6. 我要不要多学几种语言? > 这个问题怎么回答都是有道理的。说要专注,精通一样技术成为该领域专家,没错。多学几样技术傍身,防止老技术淘汰,也没错。 现在很多公司想要的是全能型人才,也就是全栈工程师。多了解一些东西肯定没坏处,就算用不上也能和人家吹牛B啊。 但是如果全都仅仅是了解,没有一门精通的,那你也是很痛苦的。感觉什么都会,做起来什么又都不会。 所以大多数人还是应该有一两门主攻的技术,其它技术也应该稍微有所了解。