當前位置:才華齋>設計>網頁設計>

php是什麼型語言

網頁設計 閱讀(1.24W)

PHP寫的網站佔所有網站的大概 80%了。那麼你知道php是什麼型語言了嗎?PHP 是一門弱型別語言,跟yjbys小編一起來學習一下吧~

php是什麼型語言

  PHP 是一門弱型別語言

我們注意到,不必向 PHP 宣告該變數的資料型別。

PHP 會根據變數的值,自動把變數轉換為正確的資料型別。

在強型別的程式語言中,我們必須在使用變數前先宣告(定義)變數的型別和名稱。

  1. 先定義一些基礎概念

Program Errors

trapped errors。導致程式終止執行,如除0,Java中陣列越界訪問

untrapped errors。 出錯後繼續執行,但可能出現任意行為。如C裡的緩衝區溢位、Jump到錯誤地址

Forbidden Behaviours

語言設計時,可以定義一組forbidden behaviors. 它必須包括所有untrapped errors, 但可能包含trapped errors.

Well behaved、ill behaved

well behaved: 如果程式執行不可能出現forbidden behaviors, 則為well behaved。

ill behaved: 否則為ill behaved...

  2. 有了上面的概念,再討論強、弱型別,靜態、動態型別

強、弱型別

強型別strongly typed: 如果一種語言的所有程式都是well behaved——即不可能出現forbidden behaviors,則該語言為strongly typed。

弱型別weakly typed: 否則為weakly typed。比如C語言的緩衝區溢位,屬於trapped errors,即屬於forbidden behaviors..故C是弱型別

前面的人也說了,弱型別語言,型別檢查更不嚴格,如偏向於容忍隱式型別轉換。譬如說C語言的int可以變成double。 這樣的結果是:容易產生forbidden behaviours,所以是弱型別的'

動態、靜態型別

靜態型別 statically: 如果在編譯時拒絕ill behaved程式,則是statically typed;

動態型別dynamiclly: 如果在執行時拒絕ill behaviors, 則是dynamiclly typed。

  3. 誤區

大家覺得C語言要寫int a, int b之類的,Python不用寫(可以直接寫a, b),所以C是靜態,Python是動態。這麼理解是不夠準確的。譬如Ocaml是靜態型別的,但是也可以不用明確地寫出來。。

Ocaml是靜態隱式型別

靜態型別可以分為兩種:

如果型別是語言語法的一部分,在是explicitly typed顯式型別;

如果型別通過編譯時推導,是implicity typed隱式型別, 比如ML和Haskell

  4.下面是些例子

無型別: 彙編

弱型別、靜態型別 : C/C++

弱型別、動態型別檢查: Perl/PHP

強型別、靜態型別檢查 :Java/C#

強型別、動態型別檢查 :Python, Scheme

靜態顯式型別 :Java/C

靜態隱式型別 :Ocaml, Haskell