PHP語法特點
我的主攻是C, C++,之前也學過 Python, Lua 指令碼語言,沒有接觸過PHP。這幾天在學習PHP,做個筆記。
感覺PHP在語法上與C++特別相似。只要會C++,PHP基本上不用記什麼。
語法上有這些特點:
1. 資料型別
null, bool, string, float, integer, array, object
object 是 new 出來的物件
轉換型別與 C 一樣。
2. PHP裡所有的變數名都是以 $ 開頭
在Shell裡,只有獲取變數的時候才需要加$符號,在PHP裡,所獲取還是設定都要加 $ 符號
$str = "hello";
echo $str;
3. PHP裡變數名區分大小寫,函式名不分
$str = "String
";
$STR = "This is STR
";
echo $str;
ECho $str;
echo $STR;
結果輸出:
String
String
This is STR
4. PHP裡的註釋除了C++有的 // /**/ 外,還有指令碼常用的 #
// 註釋
/*
* 註釋
*/
# 註釋
5. 定義變數時無需指明型別
這點與 python, lua一樣,這也是大多資料指令碼的共性。
6. 資料組是 array
用作陣列時:
$arr = array("C++", "C", "Java", "PHP");
用作對映表時:
$map = array("John"=>"M", "Lily"=>"F");
如果不指定鍵值,那麼它就是數字 0,1,2,3…為鍵。如果指定了鍵值,那就以指定的鍵值為鍵。
其功能非常類似於Lua的表。Lua的如下:
w = {x=0, y=0, label="console"}
不過 Lua 的有點怪異,非得從1開始計數。
7. 邏輯語句與C++一樣
if .. else if .. else, for, while, continue, break等與C++一樣。只不過,PHP還支援用 : … endXXX 來代替 { … }
if ($num == 0) {
echo "num = " . $num;
}
# 也可以寫成如下
if ($num == 0) :
echo "num = " . $num;
endif
有 ++$i 與 $i++,與C++一樣。
8. 字串用 . 進行連線
這一點跟 Lua 類似,Lua 是用 .. 進行字串拼接的。
9. 字串用單引號或雙引號界定
$name = `Peter`;
echo `My name is $name
`;
echo "My name is $name
";
echo "===="
My name is $name
My name is Peter
====
在單引號裡 $name 與
都沒有被重新計算。而雙引號則會被替代。這點跟shell一樣。
10. 有 === (恆等)與 !== (不恆等)比較。恆等的意思是不僅值相等,型別還一樣
11. 函式的定義
function PrintName($name = "Unknow") {
if (is_string($name)) {
echo "My name is $name
";
return TRUE;
}
return FALSE;
}
PrintName("Hevake");
與 Lua 類似,也可以帶預設值
12. 常量
define("NAME", "hevake_lcj"); # 定義常量
echo constant("name"); # 取常量
if (defined("name")) { # 檢查是否定義了常量 name
echo "定義了 name";
}
13. 可變變數
<?php
$text="My Name";
$a = "text";
echo $$a;
echo `<br>`;
$b = `a`;
echo $$$b;
?>
$text, $$a, $$$b的結果都是“My Name”。
函式也可以這樣引用:
<?php
function come() {
echo "I am coming. <br/>";
}
function back() {
echo "I am back. <br/>";
}
$func = "come";
$func();
$func = "back";
$func();
?>
14. 預定義環境變數
$_SERVER, $_COOKIE, $_SESSION, $_POST, $_GET, $GLOBALS
15. 函式可以以引用傳參
<?php
function example(&$m) {
$m = $m * 5 + 10;
}
$m = 1;
example($m);
echo "<p>在函式外:$m = $m</p>";
?>
16. foreach迴圈
<?php
$map = array(`john`=>18, `licy`=>22);
foreach ($map as $key=>$value) {
echo "$key=>$value, ";
}
echo `<br/>`;
?>
17. 物件導向與Java類似
<?
#示例學生類
class Student
{
#建構函式,沒有指定public, protected, private,預設為public
function __construct($Name = "Unknow", $Age = 0)
{
$this->mID = static::$sCount++; #注意靜態成員的引用方法
echo "Student $this->mID construct<br/>";
$this->mName = $Name; #注意:是$this->mName,而不是$this->$mName
$this->mAge = $Age;
}
function __destruct()
{
echo "Student $this->mID destruct<br/>";
}
function __clone()
{
$this->mID = static::$sCount++;
echo "Student $this->mID cloned.<br/>";
}
function __get($name)
{
if ($name == `Name`) {
return $mName;
} else if ($name == `Age`) {
return $mAge;
} else {
return null;
}
}
function __set($name, $value)
{
if ($name == `Name`) {
if (is_string($value)) {
$this->mName = $value;
}
} else if ($name == `Age`) {
if (is_int($value)) {
$this->mAge = $value;
}
} else {
throw new Exception("No attribute $name");
}
}
function __ToString()
{
$ret = `<hr/>Class: ` . __CLASS__ . `<br/>` .
" Name: " . $this->mName . `<br/>` .
" Age: " . $this->mAge . `<br/><hr/>`;
return $ret;
}
static private $sCount = 0;
private $mID;
private $mName;
private $mAge;
}
function foo($s) {
$s->Age = 30;
}
$s = new Student(); #例項化物件要加new,這不像Python,否則就被當成Student()函式了。
#在構造的過程中,Student::__construct()會被自動呼叫
$s->Name = "John";
try {
$s->Sex = "male"; #Student並沒有Sex屬性,會拋異常
} catch (Exception $e) {
echo `Exception occur!!<br/>`;
echo $e;
}
foo($s); /*將物件作為實參傳給函式時,其實轉的是這個物件的控制程式碼,就像傳的是指標一樣。
在foo()中對$s物件的修改是有效的*/
echo $s; #自動呼叫Student::__toString()
$s1 = clone $s; //clone物件
unset($s);
$s1->Name = "LiChunjun";
echo $s1;
?>
可以重定義如下關鍵函式:
-
__get($name) 屬性獲取函式,$name為屬性名
-
__set($name, $value) 屬性設定函式
-
__construct() 建構函式
-
__destruct() 解構函式
-
__call($name, $params) 呼叫函式
-
__autoload() 類定義載入回撥函式
-
__tostring() 轉換字串函式
相關文章
- PHP基本語法PHP
- Kotlin 程式語言詳解:特點、應用領域及語法教程Kotlin
- 語法點
- Python語言的特點有哪些?九大特點介紹!Python
- 20200126 - PHP 基礎語法PHP
- PHP Javascript 語法對照PHPJavaScript
- 《PHP學習筆記——PHP基本語法》PHP筆記
- 自學PHP筆記(一)PHP語法PHP筆記
- 自學PHP筆記(一)PHP基本語法PHP筆記
- PHP高階語法總結PHP
- PHP Javascript 語法對照、速查PHPJavaScript
- PHP基本語法學習 常量PHP
- PHP基本語法學習 [常量]PHP
- 關於Ruby的語言特點
- Java程式語言特點簡介Java
- Java備忘錄《語言特點》Java
- Java語言有什麼特點Java
- Python語言的特點有哪些?Python
- php語法同java語法的基本區別(例項專案需求,php才能熟)PHPJava
- Dart語法要點Dart
- 詳解中括號語法及點語法
- Rust語言最獨特的特點是什麼? - RedditRust
- goto 語法在 PHP 中的使用GoPHP
- PHP基本語法學習 [變數]PHP變數
- php基礎語法_物件導向PHP物件
- Python語言的特點技巧有哪些?Python
- Dart 語言的7個很酷的特點Dart
- PHP 7.4 新語法:箭頭函式PHP函式
- 趙童鞋帶你入門PHP(四) PHP進階語法PHP
- Rust語言與Go語言各自特點概要比較 –thenewstackRustGo
- 什麼是Go語言?Go語言有什麼特點?Go
- PHP與Python有什麼區別?各具有哪些特點?PHPPython
- 如何給 PHP 新增新的語法特性 (譯)PHP
- 關於PHP的語法介紹,新手必看PHP
- PHP基本語法學習 [資料型別]PHP資料型別
- Python 與 JavaScript 語法差異點PythonJavaScript
- 主流程式語言的介紹及特點
- 細學C++之C++語言的特點C++
- PHP入門:書寫語法以及基本規範PHP