閱讀時長:10分鐘
技術預備:PHP基礎語法
通過上一篇的學習,相信童鞋們已經大概瞭解了PHP的變數和陣列,這篇雖然叫進階語法,但其實也還是基礎語法,只是為了和上一篇做一個區別。(在程式設計界再怎麼高階的東西始終會在時間的車輪下變成基礎)
本節主要講解PHP的運算子、函式和麵向物件。
依照上一節的特性,一些太簡單的如 $a=$b+$c;
這種基礎操作就跳過了,我們主要來講講PHP的一些騷操作。
一、運算子
大部分現代程式語言的運算子在PHP都實現了,這裡主要講解一下弱型別語言特有的“==”和“===”運算子。
在強型別語言中一般只有“==”這種運算子,那麼為什麼弱型別語言會需要“===”運算子呢?
這是因為在弱型別語言,如PHP中,當數字0和字串“0”相比較的時候,PHP會自動的把字串轉換為數字再進行比較,也就是說 0=="0" 會返回true。(課外題:數字和字串比較的時候,PHP是按什麼規則來進行字串的數字轉換?)
但是某些場景下,我們除了進行數字比較以外,還需要精確的型別比較,這種時候就需要“===”運算子來處理了,使用“===”運算子PHP會先校驗兩邊變數的型別,如果型別不相同則會直接返回false。
同理,判斷不等於也有“!=”和“!==”兩種比較運算子。
課後習題:
FALSE=="";
0=="0abc";
0=="0123";
0==0.0;
0==[];
"0abc=="";
''=="";
如果這些能做到全對,那麼這關你就跨過去了,需要答案的童鞋可以在公眾號給趙童鞋留言哦。
二、函式
在PHP中,所有函式都需要使用function關鍵字來標識。
如:
function fun(){
echo "HelloWorld!!!";
}
複製程式碼
在類裡的方法則自帶了$this變數,用來指示當前呼叫方法的物件。(課外題:童鞋們還記得之前講解的函式和方法有什麼區別嗎?)
在許多程式語言中,方法呼叫都是使用“.”符號來完成的。
如:
this.sayHello();
但在PHP中,“.”運算子已經被用作字串連線符了,所以需要使用->符號來進行方法的呼叫,這個符號是不是非常形象(簡單粗暴)呢?
如:
$this->sayHello();
在函式這裡我需要著重講解一下,PHP中兩個常用的內建函式empty()
和isset()
。
有許多剛入門PHP的童鞋可能會經常搞混這兩個函式的使用區別。
首先是empty()
函式的官方解釋:
當var存在,並且是一個非空非零的值時返回 FALSE 否則返回 TRUE。
以下的東西被認為是空的:
- "" (空字串)
- 0 (作為整數的0)
- 0.0 (作為浮點數的0)
- "0" (作為字串的0)
- NULL
- FALSE
- array() (一個空陣列)
- $var; (一個宣告瞭,但是沒有值的變數)
然後是isset()函式的官方解釋:
如果var存在並且值不是 NULL 則返回 TRUE,否則返回 FALSE。
可能有童鞋看完解釋還是一頭霧水,其實他們的區別就是對於NULL
值的判斷。
- 當我們需要判斷一個變數是否已宣告但值為空的時候,就可以用
empty()
函式來判斷。 - 當我們需要判斷一個變數是否未宣告或值為NULL的時候,就可以用
isset()
函式來判斷。
三、物件導向
PHP的物件導向又是那些什麼繼承啊,多型啊,父類啊,子類啊,為什麼這麼累啊的東西,和大部分程式語言的一樣,我就不寫了。
上面只是開玩笑的,物件導向是目前程式語言的一個趨勢,甚至Javascript在ES6之後也支援了Class的寫法。
但是直接來講物件導向我個人覺得是非常枯燥的一件事情,而且對一個初學者講建構函式、解構函式、繼承、多型之類的東西會很容易繞暈,更多數的情況是隻有“哦~原來這樣,然後呢?”這種體會,沒兩天就忘光光了。
所以我認為物件導向這方面如果是有其他語言經驗的童鞋,應該不太需要再重頭學一遍,而初學者的話我們在後面結合專案再來講解就會更加容易理解,而且體會也是完全不一樣的。
四、小結
PHP的語法講解經過兩個章節算是基本講完了。
什麼?你說就這麼短?許多的教程語法都要講四五節課以上?
那是很正常的,因為趙童鞋跳過了大量的細節,我認為入門一個新的知識應該只花20%的時間來學習80%經常用到的知識才是最高效的,大量的細節我們在後面再來慢慢補充。
什麼?你覺得自己什麼都沒學到?
那也是很正常的,能過目一遍就全部理解全部掌握的人始終是非常少數的,許多知識都要經過大量的練習才能真正的領悟到。
後面的章節我們就直接進入到框架的學習。
----- End -----
更多好文
請掃描下面二維碼
歡迎關注~