我從2012年開始學習如何使用html和css進行編碼,自從我的編碼之旅開始以來,php一直是我一直想學習的語言之一。
作為一個剛從JAVAScript培訓學校畢業的學生,我決定要重新嘗試學習PHP。一直以來,要想找到一些關于 PHP 的資源,而不是針對那些從未接觸過代碼的人,是相當困難的。所以,這也是我寫這篇文章的原因。我希望能夠幫助其他像我這樣的人,他們只是需要一個快速的指導,讓他們了解自己選擇的語言和他們想學的語言之間的區別。
一般語法
PHP 的語法和 JavaScript 的最大區別之一是,PHP 的語法中,需要在行的末尾加上分號。我一開始很糾結于這個問題,現在有時也會這樣,所以我想在這里首先說明一下。
使用語言
在JavaScript中,除了確保文件具有 .js 擴展名之外,無需執行任何特殊操作即可運行代碼。但是,在PHP中,即使在擴展名為 .php 的文件中,也需要使用標簽。
<?php
# code here
?>
聲明變量
在PHP中創建變量非常簡單。與JavaScript一樣,PHP是一種動態類型化的語言,因此不必在創建變量時聲明變量的類型。它使用 $ 符號表示變量。
$myvar = 'value';
在PHP中,默認情況下你聲明的任何變量都是可變的,絕對可以在任何地方進行更改。
聲明常量
PHP有一個稱為 define 的特殊功能,用于專門創建無法更改的變量。它帶有兩個參數:變量的名稱和要分配給它的值。默認情況下,此函數將你創建的變量名稱設置為區分大小寫。可以通過將 true 作為第三個參數傳遞給函數來覆蓋它。
define('CONSTANT_NAME', value, true);
聲明數組
很像JavaScript的數組可以用標準的括號符號或PHP中的一個函數來創建。也就是說,PHP的關聯數組相當于一個JavaScript對象,是在PHP中創建key/value對集合的唯一方法,而不需要導入某種模塊。在PHP中給鍵賦值是用 => 表示的。
$myArray = ['key1' => 'value', 'key2' => 'value', 'key3' => 'value'];
函數
PHP中的函數與JavaScript(特別是ES5)非常相似。
function myFunc($param) {
return $param;
}
這方面,我能在兩種語言之間找到的唯一真正的區別是,PHP具有一個運算符,可將你傳入的參數從基于值更改為引用:&。
$myVar = 10;
echo $myVar; # displays 10
function addTen(&$param) {
return $param += 10;
}
addTen($myVar);
echo $myVar; # displays 20
循環
就像函數一樣,循環與用JavaScript編寫的方式沒有太大不同。一個例外是PHP的 foreach 循環,它會根據你嘗試循環的數組類型而變化。
foreach($arrayName as $item) {
# do code
}
類和OOP方法論
類是PHP與JavaScript有很大不同的地方。盡管PHP最初不是作為一種面向對象的編程語言(類似于JavaScript),但后來又添加了該功能。
訪問修飾符關鍵字
在標準JS中,類不需要修飾詞。但是,對于PHP,它們是。
你在PHP中擁有的修飾符是:
- public——可以通過腳本或其他類在類外部使用它。
- private——創建此類的類是唯一可以訪問它的類。
- protected ——只有當它在類的子類中被調用時,才可以在類外訪問。
- static ——允許使用一個屬性或方法,而不需要對該屬性或方法所屬的類進行實例化。
在PHP中創建類時,最好的做法是利用這些關鍵字來告訴類它需要如何使用類中的屬性和方法。
class MyClass {
private $classAttrib;
public function __construct($classAttrib) {
this->classAttrib = $classAttrib;
}
}
在上面的代碼片段中,你會注意到幾件事。首先可能是兩個修飾關鍵字。在這里,我們聲明了一個名為 classAttrib 的私有變量,這個變量只能通過 MyClass 訪問。第二個是我們與PHP的內置 __construct 方法結合使用的 public 關鍵字。就像在JavaScript中一樣,這使我們可以實例化一個類,就好像它是一個函數一樣。
$myClass = new MyClass(someValue);
this和箭頭
繼續上面的 MyClass 示例,你會注意到我們以與JavaScript中相同的方式來使用它。此處的區別在于,我們使用箭頭(->)訪問該類上的 classAttrib。我們還將使用這個指針來訪問類上的任何需要在整個代碼中使用的東西。
這是JavaScript中的同一類:
class MyClass {
constructor(classAttrib) {
this.classAttrib = classAttrib;
}
}
Getters 和 Setters
Getter和Setter是用于獲取和設置(或更新)與類屬性有關的信息的類方法。在JavaScript中,我們通常不需要編寫它們,類似地,在PHP中也不需要。話雖如此,但在PHP中你會看到這些方法的頻率要高得多,所以我覺得在這里還是慎重一點。基本上,這些方法是唯一應該在類外直接修改或與類屬性交互的東西。
# ... inside MyClass
public function setClassAttrib($classAttrib) {
return $this->classAttrib = $classAttrib;
}
public function getClassAttrib() {
return $this->classAttrib;
}
繼承
從PHP中的父類繼承類似于JavaScript,不同之處在于我們不使用 super 來傳遞父類的屬性。相反,我們使用 :: 運算符,也稱為范圍解析運算符。
class SecondClass extends MyClass {
private $newAttrib;
public function __construct($classAttrib, $newAttrib) {
parent::__construct($classAttrib);
this->newAttrib = $newAttrib;
}
}
PHP和JavaScript的相似之處
既然我們已經討論了JavaScript和PHP之間的一些差異,那么讓我們來談談一些相似之處!
- PHP有展開(...)語法!你可以使用與JavaScript中完全相同的語法,在參數(參數解包在PHP 5.6以上)和數組(從PHP 7.4以上開始)中都可以使用!
- PHP有三元運算符!
- PHP具有 == 的強制類型轉換!
如前所述,我還是PHP的新手,但希望本文對你有所幫助! ??
如果對你有所啟發和幫助,可以點個關注、收藏、轉發,也可以留言討論,這是對作者的最大鼓勵。
作者簡介:Web前端工程師,全棧開發工程師、持續學習者。