雖然 PHP 是一個易於上手的程式語言,但這並不代表它在功能上有所不足或不適合建立大規模和高度專業的應用程式。特別是在網站開發領域,PHP 絕對是一個值得考慮的選項。
這篇文章旨在簡要介紹 PHP 的基本概念,為對軟體開發感興趣的讀者提供一個初步的了解。不論你是一名剛開始學習的新手,還是已經有一些程式開發經驗的開發者,這篇文章都能幫助你建立對 PHP 的基本認識。
值得一提的是,PHP 擁有豐富的函式庫、強大的開發框架,以及活躍的開發者社群。因此,如果你對 PHP 和網站開發有興趣,這篇文章會是你的絕佳起點。
Table of Contents
1. PHP 是什麼 ?
PHP 是一種腳本程式語言,編寫後可直接執行。
PHP 主要用在 SERVER SIDE 的網站程式開發,根據 W3Techs 的報告,截至2021年9月:「有78.9%的網站使用PHP。」
from WikiPedia
PHP 主要在後端執行,後端執行表示 PHP 程式,是執行在 SERVER SIDE,不是執行在 CLIENT SIDE。
後端和前端程式有什麼差別呢,JavsScript 就是在前端執行的程式語言,程式會下載到 (前端) 我們的電腦 (瀏覽器) 中執行,但 JavaScript 也可以在後端執行,現在不能單單只靠程式語言種類,來判斷它是在後端還是前端執行。
PHP 很早以前就發明了,在 1995 年,它的目的是用來開發動態網頁,但不代表它就只能網站開發,程式語言只是個工具,端看開發者要如何使用。
PHP 是跨平台的開發語言,Linux、Windows、macOS 都可以使用 PHP。
PHP 用途與應用場景
作為一種廣泛使用的開源服務端腳本語言,主要用於網頁開發,但也可用作一般目的的程式語言。以下是PHP的主要用途和應用場景:
1. 網站開發
- 動態網頁:PHP能夠生成動態網頁內容,使網站更加互動。
- 內容管理系統(CMS):如WordPress, Joomla等都是基於PHP。
2. 資料庫操作
- 資料庫連接:PHP可以與多種資料庫進行交互,例如MySQL, PostgreSQL等。
- 資料庫管理:進行CRUD(創建、讀取、更新、刪除)操作。
3. 服務器端應用
- 檔案管理:上傳、下載和處理檔案。
- 使用者認證:登錄和註冊功能。
4. 電子商務
- 購物車:建立和管理線上購物車。
- 付款閘道:整合各種線上支付方式。
5. API開發
- RESTful服務:建立和使用REST API。
- 資料格式轉換:如JSON, XML等。
6. 其他
- 郵件服務:如發送確認郵件、通知等。
- 圖像處理:如創建縮略圖、圖像轉換等。
PHP的用途非常廣泛,從簡單的網頁到複雜的企業級應用都有其身影。其強大的庫支持和社群資源使其成為開發者的首選之一。
2. PHP 已死,沒有人在用 PHP 開發 ?
討厭 PHP 的人好像蠻多的,電腦科學相關科系的主要語言課程,也不是 PHP。
PHP 表面上不是很流行,也不是很有趣的開發工具,執行效率沒有那麼快,在 PHP 5.x 版本之前,也許可以這麼想,但 7.x 版本之後,情況已經不同。
PHP 自 7.x 版本開始,效率是翻倍提升。
PHP 已經加入很多現代開發語言特性,開發工具和開發流程也很符合現代的開發方法,你可以選擇喜歡的開發 IDE,有很多 Framework 可以選擇,有很多 Open Source Libray 可以使用。
事實上,有將近 80% 的網站使用 PHP 開發,SERVER SIDE 程式語言排名中,與第二名的差距也非常懸殊。
有大約 30% 的網站使用 WordPress 架設,WordPress 也是目前最流行的部落格系統,WordPress 就是使用 PHP 語言開發,並持續不停的更新版本,是非常活躍的開放軟體專案。
PHP 也許不適合開發桌面應用程式、不適合開發手機 APP,不適合用於人工智慧,但在架設網站這個方面,PHP 絕對非常適合。
不管有多少工程師不喜歡 PHP,對 PHP 有多大的抱怨和意見,PHP 還是會活得好好的,會有更多的 PHP 網站繼續上線。
3. PHP 工程師的工作內容?
PHP 工程師是專門使用 PHP 來開發網站和網路應用程式的專業人士。他們通常負責後端開發,包括與資料庫的操作、伺服器管理、以及實現業務邏輯。
職責
開發和維護網站和網應用:使用 PHP 和其他相關技術(如 MySQL、HTML、CSS、JavaScript 等)。
資料庫設計和管理:負責設計資料庫結構,以及實現與資料庫的操作。
API 開發和整合:開發或整合各種 Web API。
性能優化:優化網站性能和加載速度。
安全性維護:確保網站和資料庫的安全性。
版本控制和文件編寫:使用 Git 等版本控制工具,並編寫相關文檔。
團隊協作和溝通:與前端工程師、設計師和其他後端工程師協作。
技能
熟悉 PHP 和其框架:如 Laravel, Symfony 等。
資料庫技能:熟悉 SQL 語言,具體如 MySQL, PostgreSQL 等。
前端技術:基本了解 HTML, CSS, 和 JavaScript。
版本控制:熟悉 Git。
API 開發:熟悉 RESTful API 或 GraphQL。
安全性知識:了解基本的網站安全知識,如 XSS、SQL 注入等。
問題解決能力:能夠獨立解決問題和調試。
良好的溝通能力:能夠清晰地與團隊成員和客戶溝通。
職涯發展
PHP 工程師有多種職涯發展途徑,以下是一些常見的發展方向:
1. 高級或資深 PHP 工程師
經過幾年的經驗積累,PHP 工程師通常會晉升為高級或資深工程師。在這個階段,他們不僅負責編碼,還可能需要負責架構設計、技術選型和團隊指導。
2. 全端工程師
有些 PHP 工程師會選擇擴展他們的技能範圍,成為全端工程師。這通常涉及學習前端技術,如 JavaScript、React 或 Vue,以及其他後端語言或框架。
3. 專案經理或技術經理
具有良好管理和溝通能力的 PHP 工程師,可能會轉向管理角色,如專案經理或技術經理。在這些職位上,他們會負責項目的整體規劃、進度和質量控制。
4. 架構師或解決方案架構師
對於那些對大型系統設計和架構有深入了解的 PHP 工程師,成為一名架構師是一個合適的選擇。他們會負責設計整個系統的架構和確保其可擴展性和安全性。
5. 資料工程師或機器學習工程師
隨著數據科學和機器學習的興起,一些 PHP 工程師也選擇轉向這些領域。這通常需要進一步的教育和培訓,如學習 Python、數據分析和機器學習算法。
6. 創業或自由職業
有獨立精神的 PHP 工程師可能會選擇創業或成為自由職業者。這樣,他們可以自由選擇項目和工作時間,但這也需要更多的自我管理和創業風險。
7. 教育和培訓
具有豐富經驗和良好教學能力的 PHP 工程師,也可以選擇進入教育和培訓行業,如成為一名講師或撰寫技術書籍和教程。
PHP 工程師有多種職涯發展途徑可選,取決於他們的興趣、技能和職業目標。
4. 有什麼公司在使用 PHP,就業市場好嗎 ?
- Slack
- trivago
- 特斯拉
- Upwork
最有名的就是 Facebook,想不到吧。
維基百科使用 PHP,特斯拉網站也是使用 PHP。
架設內容網站,一般都會使用 CMS,例如 WordPress、Drupal,這些 CMS 就是使用 PHP 開發。
stackshare 是一個分享開發工具的網站,從這可以看到還不少公司使用 PHP。
如果有這麼多公司在使用 PHP,這樣的市場會不好嗎?
搜尋一下 104 PHP 工程師,總共有一萬八千多個職缺。
比較一下 104 Java 工程師,Java 是後端程式語言,程式語言排名都維持在前三,也是差不多一萬八千多個職缺。
如果想成為自由工作者,PHP 非常適合,搜尋 Fiverr 會發現 PHP 的案子,比 Java 語言多很多。
Fiverr 是什麼?
Fiverr 是一個自由工作接案平台,全世界的自由工作者都可以在這找到適合自己的案子。
PHP 的薪資好嗎?看看這些公司開的職缺,並不差,有發展值得投資。
薪資是以工程師的能力決定,不是由程式語言決定。
5. 現在開始學習 PHP,會不會過時,技術落後 ?
PHP 已不可同日而語,過去使用 PHP 開發網頁程式,就是有什麼寫什麼,程式邏輯和網頁顯示混在一起,雖然開發方便但會造成高維護成本,和難以擴充功能。
現代 PHP 語言,已支持許多特性:
- 物件導向程式設計
- 函數式編程
- 事件驅動程式開發
現代程式語言支持的特性,PHP 一樣支持。
程式語言的好壞不在於它什麼時候發明的,也不在於有多少人使用。
在動態網站程式開發的領域,不敢說 PHP 是最好的工具,但 PHP 絕對適合。
PHP 有各式各樣的 Web Framework,依據不同需求都可找到適合的開發框架。
- Laravel – 最受歡迎的 PHP Web Framewrok
- CodeIgniter – 最新版本 CodeIgniter4 只有 1.4 MB,小而強。
- Symphony – 不只是個 Framework,還提供了五十多種可獨立使用的開發元件。
- Yii – YES, it is! Yii 是一個嚴謹的物件導向框架,需要進階的物件繼承和多型知識。
Symphony 使用 Twig Template Engine,Twig 也可以用來快速開發 WordPress 外掛。
相關參考: Kick-Start WordPress Development With Twig: Introduction
6. PHP 適合新手學習嗎?
新手想要進入程式設計領域,一開始要面對的問題,就是該選擇什麼程式語言?
這個問題和回答什麼程式語言是最好的,一樣沒有正確答案,只有個人喜好。
很多的建議説 PHP 比較簡單,或 JavsScript 比較簡單,非常適合新手,也有很多建議初學使用 Python 最好,或是。。。
這樣的比較很難有定論,本來就沒有最好的程式語言。
關於網站程式設計,就有很多可以選擇,想要控制後端,對資料庫有興趣,那就參考看看 PHP 或 Java。
我的第一份工作使用 Java 語言開發企業網站,也是從零開始學習,因為是網站開發,必然會接觸到 PHP、HTML、JavaScript、CSS、Node.js、各式各樣的 Library 和 Framework。
軟體開發工作,不太可能選擇一門程式語言,然後永遠就是這一門語言。
新手學習 Java 適合嗎,當然適合,但如果你的興趣是網頁前端,喜歡 UI 設計,網頁互動效果,那 Java 就徹徹底底的不適合。
如果你的興趣是架設網站,喜歡研究 CMS 系統(例如 WordPress),喜歡研究資料庫,同時也想接觸前端程式開發,例如 HTML、JavaScript、CSS 等等,那 PHP 就是個非常好的開始。
PHP 是很後端的程式語言,但與前端有緊密的合作互動,學習 PHP 可以很自然的接觸網站所有面向,在開發當中自然的熟悉 SERVER 架構,了解產生動態網頁的過程。
PHP 有什麼特性適合新手呢?
- PHP 是直譯式語言,程式寫完不需經過編譯,直接執行。
- PHP 連結資料庫很方便,設定也簡單。
- 可輕易的將程式部署到虛擬主機空間執行。
- 不需要功能高強的 IDE 輔助,就可以輕鬆的撰寫程式。
什麼是 IDE ?
Integrated Development Environment,程式原始碼編輯工具,各種程式語言都有專門的 IDE,也有一般通用的 IDE,可編輯各種語言程式。
好的 IDE 通常有以下幫助寫程式的功能:
- 高亮度語法: 程式語言的語法很多,關鍵字很多,加上語法高亮度顯示,可以幫助確認程式語法正確和方便 DEBUG。
- 自動完成語法: 程式語言會提供各式各樣工具函式,所以我們不需要重複撰寫同樣的功能程式,但我們不可能記得住這些公用函式的名稱和參數,藉由 IDE 的幫助,只要輸入函式開頭,就會提示或自動完成函式或語法。
- 自動完成編譯或自動化指令: 程式撰寫過程有些固定的流程和動作,可藉由 IDE 的幫助,將這些動作自動化,好的工程師就是要懶惰啊。
- 整合除錯 (DEBUG): 整合除錯可以讓程式寫完,就直接在開發環境執行,直接在 IDE 觀察程式邏輯和變數值,方便找出程式錯誤,不同一直將程式丟到正式環境執行,看看對不對,然後一直重複。
推薦使用 Visual Studio Code 撰寫 PHP 程式,簡單的開始,熟悉狀況後再來慢慢添加延伸功能,提高效率。
7. 如何撰寫第一支 PHP 程式?
以下使用 MacBook AIR M1 當範例,Windows 系統可以使用 chocolatey 安裝 PHP。
#1 安裝 Homebrew
先準備好開發環境,開啟終端機或 item2,拷貝貼上以下指令,安裝 Homebrew。
已安裝過可以跳過。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
#2 安裝 xcode command line tool
已安裝過可以跳過,拷貝貼上以下指令。
xcode-select --install
#3 安裝 PHP
拷貝貼上以下指令
brew install php
#4 確認安裝完成
拷貝貼上以下指令,如果看到 PHP 版本號碼,表示安裝成功,可以開始寫 PHP 程式。
php -v
以上就完成開發環境準備。
來寫一段最簡單的 PHP 程式,將下面的程式儲存成 index.php。
<?php
echo "<h1> Hello PHP! </h1>";
在終端機中輸入 php index.php
,就會看到執行結果,顯示文字 Hello PHP!
如果你想,可以 echo 一個完整的網頁。
但這樣不是網站啊,很簡單,在 index.php 相同的目錄中,輸入以下指令~
php -S localhost:8000
開啟瀏覽器,輸入網址 http://localhost:8000
你的第一個 PHP 網站完成。
看看其它用 PHP 開發的有趣網站:
最後
如果一直聽到有人抱怨 PHP,覺得 PHP 很難用,這表示 PHP 還沒死,還是繼續在苦毒 WEB 世界 😂😂。其實把 JavaScript 寫爛的人也挺多啊,把 HTML 寫爛的人更多啊。
重點不在於程式語言本身是否”好”或”壞”,而在於工程師如何運用這些工具來解決問題。一個優秀的工程師能夠用 PHP 寫出高效、可維護的代碼,就像他們能用 JavaScript 或 HTML 做到一樣。
因此,當你聽到有人抱怨某種程式語言時,不妨先思考一下,是不是這個語言真的有問題,還是只是因為某些人沒有充分發揮它的潛力。畢竟,任何工具在不同人手中的表現都是不同的,這一點,PHP 也不例外。
印象中 PHP 好像是我最早接觸的程式語言,也曾經放棄過,不過現在仔細看看,PHP 真的還不賴,我才是那個把 PHP 寫爛的人 😄😂😄😂😄。