## 有些话想说
现在很多初学者刚学某一门语言就找框架学,而不了解该语言原生的一些功能写法。
我认为,如果在时间允许的条件下,先行学习了解语言原生特色和功能,编写一两个小项目,之后的发展会好于直接上手框架。
就我个人经历而言,两年前刚毕业,找的第一份工作是在一家小公司。只有我一个程序员,开发的是一个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啊。
但是如果全都仅仅是了解,没有一门精通的,那你也是很痛苦的。感觉什么都会,做起来什么又都不会。
所以大多数人还是应该有一两门主攻的技术,其它技术也应该稍微有所了解。
- 序言
- 有些话想说
- 基础入门
- 简介
- 下载YurunPHP
- 运行环境
- 开发规范
- 目录结构
- 模块
- 控制器
- 项目配置
- 入口文件
- 项目目录结构
- 配置文件
- 框架编译
- 项目部署
- 控制器
- 创建控制器
- 加载模版显示页面
- AJAX返回数据
- 模型
- 创建模型
- 实例化模型
- 数据管理
- 连贯操作
- distinct
- field
- from
- where
- wherePk
- group
- having
- order
- limit
- join
- page
- headTotal/footTotal
- 连贯操作收尾方法
- select
- selectPage
- buildSQL
- selectValue
- selectBy
- getBy
- getByPk
- random
- inc
- dec
- add
- edit
- delete
- 合计函数
- save
- 执行SQL语句
- 创建数据并验证
- 字段映射
- GET/POST/COOKIE/REQUEST
- Cookie
- Session
- 数据库操作
- 配置文件
- 常用操作
- 查询记录
- 存储过程
- 数据库函数
- MSSQL
- 视图
- 调用视图
- 给视图传值
- 模版引擎
- 输出
- 使用PHP代码
- 模版标签
- if
- switch
- for
- counter
- foreach
- include
- js/css/image
- url
- 模版常量替换
- 自定义控件
- 通用属性用法
- 数据集绑定
- 下拉框(select)
- 单选框(radio)
- 单选框组(radiogroup)
- 选择框(checkbox)
- 选择框组(checkboxgroup)
- 表格(table)
- 文本框(textbox)
- 分页条(pagebar)
- 数据验证
- 验证方法
- between
- betweenEqual
- empty_str
- not_empty_str
- regex
- length
- lengthChar
- mobile
- tel
- phone
- postcode
- url
- ip
- lt/gt/ltEqual/gtEqual
- equal/unequal
- in/notin
- idcard
- 路由
- 路由配置
- 自定义分层
- 缓存
- 文件缓存
- 配置
- PHP数组配置
- 过滤域名
- 日志
- 文件日志
- 事件&插件机制
- 框架事件列表
- 多语言支持
- 定时任务
- API接口开发