趙童鞋帶你入門PHP(四) PHP進階語法

寫程式的趙童鞋發表於2018-12-23

閱讀時長: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 -----

更多好文

請掃描下面二維碼

歡迎關注~

趙童鞋帶你入門PHP(四) PHP進階語法

相關文章