## 有些話想說
現在很多初學者剛學某一門語言就找框架學,而不了解該語言原生的一些功能寫法。
我認為,如果在時間允許的條件下,先行學習了解語言原生特色和功能,編寫一兩個小項目,之后的發展會好于直接上手框架。
就我個人經歷而言,兩年前剛畢業,找的第一份工作是在一家小公司。只有我一個程序員,開發的是一個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語句
- 創建數據并驗證
- 字段映射
- 增刪改查前置和后置
- Response類
- GET/POST/COOKIE/REQUEST
- Cookie
- Session
- 如何自定義Session存儲
- 數據庫操作
- 常用操作
- 查詢記錄
- 存儲過程
- 數據庫函數
- MSSQL
- 視圖
- 調用視圖
- 給視圖傳值
- 模版引擎
- 輸出
- 使用PHP代碼
- 模版標簽
- if
- switch
- for
- counter
- foreach
- include
- js/css/image
- url
- origin
- 模版常量替換
- 后臺視圖控件
- 通用屬性用法
- 數據集綁定
- 下拉框(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
- 路由
- 路由配置
- 自定義分層
- 緩存
- 緩存配置
- 使用緩存
- 配置
- 配置驅動配置
- 使用配置
- 過濾域名
- 日志
- 日志驅動配置
- 文件日志
- 事件
- 事件列表
- 插件
- 多語言支持
- 定時任務
- API接口開發
- CLI命令行模式
- Soap WebService