iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 10
0
Modern Web

每日文章推薦系列 第 10

Day 10 PHP的學習

  • 分享至 

  • xImage
  •  

要看書嗎?

目前中文的相關書籍 出版日期都有點久

導致最近在網路上看到有人問問題

大部分的原因都是版本差異

ex. mysql_* 系列函式在新版已經拿掉瞜

所以真的要看的話建議看完語法就好

另外還是會推薦看兩本書

  1. 現代 PHP|新的特點及良好習慣(Modern PHP: New Features and Good Practices)

    雖然這本出來時的php版本是5.6

    現在stable 已經7.2了

    不過還是講到很多基礎的特性

    建議還是去找來看一下

  2. PHP The Right Way

    有很多重點

    強烈建議看一下

    簡中版本八月更新 看不懂英文也可以先看

    原文還蠻常更新的

    有空可以回來看一下

composer

前面提到版本差異

PHP在5.3這個版本號應該是個分水嶺

5.2以前是地獄 5.3以後是天堂

主要差別是多了namespace這個特性

從此php的套件使用方式完全改變了

從以前的下載 解壓縮 require

檔案裏面也要require來require去

少了一個就準備噴錯誤

變成composer require

還有packagist這個網站可以找你想用的套件

利用composer也可以很方便的在小專案引入套件

基本上是個現代PHP不可或缺的東西

沒看過不要跟我說你在寫PHP

想看詳細的就找本現代PHP吧

mysql mysqli pdo

mysql

mysql 非常古老,并且已经被以下两个扩展取代:

PHP 中的 mysql 扩展已经不再进行新的开发了,在 PHP 5.5.0 版本中正式标记为废弃,并在 7.0 正式被移除

想要辨别 mysql 是否被使用,你不需要到 php.ini 去查看。只需要使用编辑器打开你的项目,然后全局搜索 mysql_*,如果有类似 mysql_connect() 或者 mysql_query() 方法出现,那么你就使用了 mysql

如果因为特别原因还未考虑升级到 PHP 7.x 的话,可以考虑使用 mysqli 或者 PDO 来临时解决问题。

以上引用自 http://laravel-china.github.io/php-the-right-way/#databases

所以如果你看到書裡還在用mysql_* 系列函式的東西 請記得轉換一下

差異

ext/mysqli PDO_MySQL ext/mysql
PHP version introduced 5.0 5.1 2.0
Included with PHP 5.x Yes Yes Yes
Included with PHP 7.x Yes Yes No
Development status Active Active Maintenance only in 5.x; removed in 7.x
Lifecycle Active Active Deprecated in 5.x; removed in 7.x
Recommended for new projects Yes Yes No
OOP Interface Yes Yes No
Procedural Interface Yes No Yes
API supports non-blocking, asynchronous queries with mysqlnd Yes No No
Persistent Connections Yes Yes Yes
API supports Charsets Yes Yes Yes
API supports server-side Prepared Statements Yes Yes No
API supports client-side Prepared Statements No Yes No
API supports Stored Procedures Yes Yes No
API supports Multiple Statements Yes Most No
API supports Transactions Yes Yes No
Transactions can be controlled with SQL Yes Yes Yes
Supports all MySQL 5.1+ functionality Yes Most No

引用自http://php.net/mysqlinfo.api.choosing

就功能性我是覺得pdo跟mysqli都不錯

並沒有絕對的優劣

pdo號稱可以跨database 但是遇到特殊語法還是會GG

這邊有一篇相關討論可以看一下

學東西不要人家說哪個好用就跟著說好用

要理解優缺點

重點是千萬千萬不要直接組合字串去跑SQL

在啥程式語言都一樣

Framework

個人用過的只有兩套

laravel 跟 codeigniter

剛好也是兩個時代

codeigniter

我從2.X開始用 用到3.X

中間有遇到PHP4的案子還跑去用1.X版

架構簡單 隨拆即用 文件清楚

https://codeigniter.org.tw/userguide3/

感謝appleboy

架構簡單是優點

但也是缺點

遇到大型專案要擴充架構的時候就要自行設計

要自行設計不是問題

問題在於十個人去設計可能會有十一種作法

所以我覺得大型專案要找一個有架構可以參考的Framework

Laravel

laravel我從3.x開始觀望

一開始覺得太繁瑣 所以就只是看看而已沒在用

進入4.x以後有玩一下 但還是覺得麻煩

而且優點不足以讓我替換掉codeigniter

當5.1 LTS版本出來以後我才覺得可以入坑了

不過當時也沒有專案讓我覺得需要用上laravel

又正好此時公司遇到要自行建立系統的狀況

所以又研究了一下各個Framewok

最後還是覺得在台灣用laravel比較好

主要原因是社群比較有在經營

要問問題也比較找的到人

所以就推薦用這套了

當時個人還是比較喜歡codeigniter

但是覺得團隊跟個人需求還是會不一樣

今日分享文章

沒有

沒有

沒有

不重要也是要講三次

畢竟也不是每天都有值得分享的文章的XD

有一些是之前分享過了

除非是有修改或者是有有趣的回應

不然不會重複分享

(今天看過的文章)[https://github.com/fripig/article_log/issues/418]


上一篇
Day 9 framework
下一篇
Day 11 npm
系列文
每日文章推薦30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Xuan
iT邦新手 5 級 ‧ 2017-12-14 09:59:41

推!

我要留言

立即登入留言