PHP語法入門(含物件導向)

 課程摘要:

影片/文章

影片/文章

網頁程式

23 課程

0% 尚未開始

The Different Types of Urgency Campaigns You Can Create
講師 哥布林工程師
關於 PHP語法入門(含物件導向)

保證你也學得會

準備好開始上課了嗎?

入門篇

17 課程

會員限定

你好 歡迎回到 Laravel 百萬年薪特訓營 從這個單元起我將幫助你快速完成 PHP 程式語言的入門 你看過 PHP 的程式語法嗎? 對不熟悉它的人來說最主要的印象應該就是 有大於.小於.問號和金錢符號 而且程式碼往往會散落在 HTML 文件裡頭 其實現代的 PHP 程式開發已經大不相同了 你在 Laravel 入門章節將會清楚發現到這點 現在我還是先簡單的為你介紹一下吧 PHP 是在1995年問世 原本是由 Rasmus Lerdorf 為了要維護個人網頁 用 C 語言開發的一些工具程式集來取代原先使用的Perl程式 他在 1995 年將 PHP 公開釋出 希望可以透過社群來加速程式開發與除錯 後來經由眾多高手持續修改及幾次的重大改寫 它成為我們今日看到的廣泛且成熟的動態網頁語言 PHP 是一種開源通用的電腦手稿語言 特別為動態網頁設計而設計 PHP 全稱為 Hypertext Preprocessor 中文名稱為超文字預處理器 意即可以在 HTML 網頁中嵌入 PHP 程式 當使用者造訪網頁時 PHP 程式碼會在網頁伺服器上被解譯 並產生 HTML 的輸出 讓訪客可以透過瀏覽器看到網頁內容 PHP 的主要競爭者包括有 Python、Ruby、Node.js、Microsoft.NET 與 Java 與它們相比,PHP的主要優勢有 優勢1 成本低廉 PHP是開源軟體所以它永遠是免費的 你不用擔心哪一天突然要開始付費使用 有非常多的廠商提供 PHP 網頁空間供你選擇 所以運行成本相對其他競爭對手來說低廉很多 優勢2 內建龐大的函式庫 因為PHP的設計是為了在網頁上使用的 它有許多內建的函式可執行許多實用的Web相關任務 比如即時生成圖像 連結 Web 服務與其他網路服務 解析 XML 或 JSON 傳送電子郵件 使用 cookie 或 session 產生 PDF 文件等等 只要幾行程式就可以辦到 優勢2 容易學習 PHP 作為一個腳本語言本身寫法不要求太嚴謹 有別於 JAVA 語言要求你宣告每個變數的型別 PHP 的變數則不需要可自動判別 另外 PHP 也沒有大量複雜的類別需要學習 只要掌握基本語法和一些常用函式就能快速上手 優勢3 支援物件導向 PHP 到第五版開始導入設計良好的物件導向功能 而且到了第七版仍然持續改善它們 讓你能夠更彈性的去使用先前的程式碼 優勢4 可攜性 它幾乎可運行於所有的伺服器以及作業系統 所以你的專案可以自由遷移到任何伺服器上頭 優勢5 容易取得支援與技術文件 PHP 引擎的公司 Zend Technologies 在商業基礎上提供 PHP 的支援及相關的軟體 PHP 的文件與社群都相當成熟且擁有豐沛的資源 你可以透過搜尋找到大量的共享資訊 PHP 在全球網站被廣泛使用 2021 年網頁後端的市場佔有率將近 80% 連第二名的 .NET 都完全看不到 PHP 的車尾燈 到 2013 年 4 月的統計資料 PHP已被安裝在超過 2 億 4400 萬個網站和 210 萬台伺服器上 剛剛有說到 PHP 是動態網頁程式 那有些人可能還不明白什麼是動態網頁 如果網頁會隨著登入者.時間.地點的不同而改變呈現內容 這種網頁即稱為動態網頁 比如臉書的網站每個人登入的網址都相同 但看到的內容都不一樣 這就是動態網頁的一個例子 實際上現在大多數的網站都已經是動態網頁了 那 PHP 究竟在動態網頁的工作上扮演什麼樣的角色呢 以最為泛用的程式語言 javascript 來說 JS 主要運作於瀏覽器上面 能協助工程師從網頁上取得使用者的輸入資料 而 PHP 則是協助生成網頁內容來回傳給瀏覽器 舉凡處理 cookies 或 sessions 運行影片計算排程工作 將網頁資料寫入資料庫等等 都是 PHP 擅長處理的工作 接下來我們看一下 PHP 和 HTML 之間是如何配合的 PHP 程式碼是可以寫在 HTML 內容裡頭 只要寫在 裡頭即可 編譯器就會對這個區域內的程式碼進行編譯 另外每一行程式碼結束時需要加上分號 否則會和下一行程式碼連在一起而導致錯誤 這是非常常見的錯誤 而且錯誤訊息也提示的很明顯 不需要太過擔心 除此之外 如果某個 HTML 文件裡頭有包含 PHP 程式碼 就應該將它的副檔名改成 .php 這樣才能夠讓編譯器知道這個檔案需要被編譯 比如首頁的檔案就從 index.html 變成 index.php 就是這個原因 這個單元就到這裡 我們下個單元見

請你開啟 Laravel 的路由檔(routes/web.php),加入一個新路由用來測試程式運算,如下例: //routes\web.php Route::get('cal',function(){ $num = 0; dd($num ++); }); 寫完之後請開始瀏覽器,訪問專案的 /cal 路徑來確認運算後的結果是否和你想的相同 建議測試內容 運算子: 加 + 減 - 乘 * 除 / 餘數 % 遞增 ++ 遞減 - - 優先運算 () 強制型別轉換 (要轉換的型別,比如string) 判斷型別 is_bool() is_int() is_float() is_string() is_array() is_object() is_resource() is_null() is_numberic() is_callable()

你好 歡迎回到 Laravel 百萬年薪特訓營 這個單元來聊聊該如何用條件判斷式來進行流程控制 在這個單元我將會不斷地提到狀態 Condition 與流程 Flow 所謂的狀態結果必然為布林值 也就是你要判斷的條件為何 而流程就是程式會跑動的方向 聽起來有點抽象是嗎 我用個例子來說明一下 如果今天天氣好 那我就去公園玩 否則我就待在家玩 PS4 今天天氣好不好就是要判斷的條件也就是狀態 最終天氣好的話我就去公園玩這就是流程 這樣明白了嗎? 這兩張圖提供給大家參考一下 左圖為 if 條件判斷式 根據狀態來決定走左邊還是右邊 右圖為 for 迴圈 根據狀態來決定跑幾次之後跳出 而這些幾何符號是有特別的涵義的 菱形代表條件判斷 長方形代表有作業要進行 圓形則表示流程結束 接著來看看比較運算子 在狀態 Condition 的位置 我們經常會用到比較運算子 就來看看究竟有哪些吧 大於小於和數學課學得差不多就直接照用 比如 5 < 5 的話結果是什麼 不成立對吧 所以回傳 false 又比如 2 > 1 的話結果成立 回傳的就是 true 大於等於的部分需要把等號也在大於的右邊 像這樣寫 5< = 5 結果成立回傳 true 小於等於依此類推 要比較值是否相等需要使用兩個等號以上 因為一個等號已經被用來作為賦值之用了 新手容易犯這個錯誤 請務必特別留心 像這個例子我們要比較兩個變數的值是否相同 可以使用像是 1 == 1 因為值相同所以回傳 true 這不難理解 下一個問題就是那三個等號是什麼意思 那代表檢查是否指向相同的記憶體空間 用個生活中的例子來幫助理解 學校中你肯定聽過一堆叫欣怡的 寫 欣怡 == 欣怡 就代表在檢查這兩個人的名字是否相同 字都一樣就回傳 true 但是當寫 欣怡 === 欣怡 則不只會判斷名字是否相同 而是判斷這兩個對象是否為同一個人 當美女我同學欣怡和校花欣怡都指向同一人 才會回傳 true 如果要判斷值是否不相同的運算子為驚嘆號 像是 4 ! = 3 結果回傳 true 當狀態比較複雜時會有需要結合多種條件的情況 這時候就需要用到邏輯運算子 包含了口語中常出現的而且.或者與不是 而且的運算子是兩個 & 或者的運算子是兩個 | 不是的運算子剛才說過是驚嘆號 基礎知識聊完之後回來看條件判斷式的結構 它由 if 保留字 condition狀態比較 和由大括號包起來的執行作業區域這三部分所組成 而大括號裡頭的程式碼只有在 condition 狀態為 true 這個情形之下才會被執行 比如左邊的這個例子 變數 $age 的值為 17 而這個條件判斷式是說只有在 $age 大於 16的情況之下 才會印出你可以開車 下一個來看 Else 這是用來追加條件判斷式的第二條線 也就是說當狀態不成立時所要執行的作業 具體的說當狀態結果為 false 之時 則只有在 else 後面的大括號區域才會被執行 比如左邊的這個例子 因為 $name 變數的值為 "Edgar" 狀態不成立所以會印出你是誰 還有一種情況就是條件式的路徑不只兩條 這時就需要用上 elseif 了 我們改一下剛才的例子 這次我們不只要比對名字是否為 "Simon" 還需要再比對名字是否為 "Mary" 程式碼就會先進行 if 的第一次比較 如果不成立就會依序的比較完所有的 elseif 都不成立之後才會執行最後的 else 裡頭的程式碼 雖然 elseif 的區域數量並沒有限制 但是過多的 elseif 會讓程式碼的可讀性降低 或許你就可以考慮使用 switch 來改寫條件判斷式 switch 同樣用於條件的判斷 但狀態內容非常單純就是放入一個變數 根據該變數的內容來決定要執行哪一段程式碼 這段程式碼首先宣告 $myNum 變數的內容為 2 當它被傳入 switch 結構之後 就會逐一的去比對每一個 case 當它的值與某一個 case 的值相同時 就會執行其下方的程式碼 直到碰到 break 後跳出條件判斷式 假如沒有與任何一個 case 的值相同的話 就會執行 default 下方的程式碼 這裡順便介紹一個穿越的小技巧 就是透過剛才所介紹的機制 假如不寫 break的話 你可以把多個 case 組合在一起 讓它們共用相同的程式碼 這在所執行的內容差不多時是非常有用的技巧 像是把程式碼改成這種寫法 一般來說 switch 條件判斷式的可讀性與執行效率較高 會是比 if 條件式更好的選擇 今天的這個單元就到這邊 如果剛才講的東西有些不太懂的話請參考下一個示範單元 但是有學到其他語言的學員就可以直接跳過 那就下個單元見吧 掰掰

你好 歡迎回到 Laravel 百萬年薪特訓營 這個單元我們來聊聊幾乎每個程式語言都會有的資料結構 那就是陣列 變數只能夠用來儲存單一筆資料 當資料過多時就需要使用兩種資料結構 那就是陣列以及集合 這個單元就來聊聊基本版的陣列 假如你今天要去 Costco 購物 如果要買的東西只有一個 你可以選擇直接記在腦中 就如同變數一樣 但假如你打算悠閒的在家中喝個拿鐵咖啡並把玩新買的 iPad 那恐怕就不只要買一個東西了 這時候你就需要列出一個清單來記錄要買哪些東西 [換頁] 這個清單就是陣列 陣列的英文是 Array 這個資料結構的特徵是可以有序地來儲存多筆資料 所謂有序就代表裡頭的資料順序是固定的 而存入的每筆資料則稱之為元素 元素的英文則是 Element [換頁] 不妨想像一下有個櫃子 最上層抽屜放玩具 依次各層分別擺放衣服.文具與雜物 如果要把這個櫃子轉成陣列的話 你可以透過 array() 和中括號這兩種語法 像是左邊這兩行的寫法 功能上並沒有任何差異 你可以根據自己的習慣來選擇用哪一種寫法 我自己是比較偏好使用中括號 陣列的長度代表著該陣列所儲存的元素數量 像 $box 的長度就是 4 可以利用 count() 來計算陣列的長度 如果要取出陣列中的某一個元素 則是要搭配使用陣列變數以及中括號 並在中括號內傳入該元素的索引值 索引值我們等一下來談 假如要刪除整個陣列的話 可以透過 unset() 將陣列傳入即可 但如果要刪除陣列的某個元素 則是改成將該元素傳入 unset() [換頁] 所謂索引值 index 指的是元素位於陣列中的所在位置 但不是從 1 起算 而是從 0 開始 這一點請特別注意 因此玩具的索引值為 0 而雜物的索引值則為 3 要取出玩具的語法也很簡單 比如 $box[1] 就能取出陣列中索引值為 1 的玩具 有意思的是要要存入新值與取出的語法相同 差別只在於位於等號的左邊或右邊 放在等號左邊時表示要在陣列的該位置放入新的內容 [換頁] 下一個來討論多維陣列的議題 你或許聽過二維陣列但不清楚是指什麼意思 那代表的是陣列內的某一個元素也是陣列 類似箱中箱的概念 以這張圖來說我們把第二層的文具替換成另一個儲藏箱 裡頭又有兩層可以放襪子與鞋子 那我們要取出襪子的話該怎麼寫才好呢 這對於新手來說或許有些困擾但其實並不困難 如果今晚要吃的牛肉被擺在冰箱第一層裡頭的保鮮盒 那你該如何取出牛肉才好呢 很簡單你需要先取出保鮮盒才能取出裡頭的牛肉 相同的道理你可以先寫 $box[1] 來取出儲藏櫃 繼續接 [0] 就能取出索引值為 0 的襪子囉 一旦理解了這個觀念那麼不管陣列再多層都難不倒你囉 [換頁] 這個單元的最後來討論一個在 Laravel 非常有用的陣列結構 Key Value 鍵值對 你可以把它理解為陣列的進階版本 一般陣列的資料是透過索引值來定位 而鍵值對則是索引值替換成一個自定義的 Key 或稱為鍵 這樣的好處是說在某些情況下 使用鍵來存取元素會比索引值更為直覺 就以這段程式碼來說 zack 100 和 300 分別代表角色的名稱以及血量和魔量 如果要取出血量的話用索引值就需要去記住位置 這很不直覺 改成鍵值對的話我們就能夠去指定 100 的鍵是 hp 之後就能夠改用 ['hp'] 來取出 100 了 這樣是否就直覺且好記多多 請務必多練習使用鍵值對 這在 Laravel 專案中經常會用到 [換頁] 如果還不太清楚陣列的實際應用方式可以參考下一個示範單元 如果有學過其他程式語言的話可以直接跳過 那這個單元就到這邊 掰掰

請你開啟 Laravel 的路由檔(routes/web.php),加入一個新路由用來測試陣列,如下例: //routes\web.php Route::get('array',function(){ $box = array['衣服','玩具','文具','雜物']; dd($box[0]); }); 寫完之後請開始瀏覽器,訪問專案的 /array 路徑來確認顯示的結果是否和你想的相同 練習1. 請試著分別使用 array() 和 中括號來宣告陣列 練習2. 請試著用 count() 來計算陣列的長度 練習3. 請使用索引值來存取陣列內的元素 練習4. 請練習宣告鍵值對 練習5. 請使用鍵來存取鍵值對內的元素

請你開啟 Laravel 的路由檔(routes/web.php),加入一個新路由用來測試迴圈,如下例: //routes\web.php Route::get('foreach',function(){ for ($i = 0; $i < 10; $i++) { echo $i; } }); 寫完之後請開始瀏覽器,訪問專案的 /foreach 路徑來確認顯示的結果是否和你想的相同 練習1. 請試著使用 for 迴圈,並調整各區域的內容 練習2. 請試著使用 while 迴圈 練習3. 請試著在迴圈裡頭加上 continue 和 while 並比較兩者的差異 練習4. 請試著練習使用 foreach 練習5. 請試著練習使用 foreach 來處理鍵值對

會員限定

https://goblinlab.notion.site/PHP-9adedc1639164b06b1b5bce29d4fc095

會員限定

會員限定

PHP初階教學課程 寫給初學者的 PHP 從 0 到 100 實戰課程 PHP測試沙盒

物件導向篇

6 課程

關於講師

哥布林工程師

我是品爵 ,喜歡研發和創作。在人生的1/3場就離開了有穩定月薪的職場生涯,開始驚心肉跳的創業生涯,之前也在Youtube經營分享電腦科技的頻道。
作為一位軟體工程師,隨身帶一些傷不了人的工具和撰寫駭不到人的程式碼也是很正常的。
我的服務項目有:人工智慧自動化.網頁系統開發.網頁系統程式教學.元宇宙創作與教學.系統整合諮詢。
如果你有任何和系統開發有關的問題,都歡迎找我討論

準備好開始上課了嗎?

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
>