在學完 OOP ,以及學了一些語言後,對這方面有些概觀,回來重新開始,
許多東西好像就合理了起來,但這次也只是複習基本語法罷了,期許能記得更牢。
Basic
跟 Python 一樣是動態語言,所謂變數只是 name binding,
用法跟 Python 也一樣,要用之前先 assign 一個值。
變數前跟著一個 。
但是學到 OO 的部分,事情有了些變化,const 的東西不用加 $
,或許是不把它當變數看的緣故。
物件內的變數宣告,方法和 Python 蠻像的,但好像蠻強調 public
封裝。
子函數習慣上也是用 $this
來設定 member variable。
尚未探究子函數內是否有像 Cpp 用 scope 直接使用 member variable,但學到的是用 $this
,
所以可以用的可能性不大。但子函式又不像 Python 會把 self 傳進去。
一般使用.
作為字串 connect 的 operator,所以 object 呼叫底下的東西會用->
。
object 底下的變數不用再加錢號。 ex: $nobodyzxc->name
而不是 $nobodyzxc->$name
。
static 或 const 的東西可以用 ClassName::Attr
呼叫,和 Cpp 一樣。
Functions
簡單的 operator 略過。
PHP 想當然爾,對文本的操作應是相當強的,
但我也只學到 strlen()
, strpos()
, str_replace()
,其他要用再查。
html 轉碼、正則等之前用過幾次用用也忘了。
自定義 function 寫法。1
2
3
4function func_name($var){
$rtn = blalala($var);
return $rtn;
}
在函數裡宣告的變數基本上都是區域變數,如要用全域,加上global
關鍵字。
Control Flow
基本的東西,稍微記一下。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28if(exp){
}
elseif(exp){ // well , take care the key word
}
else{
}
switch(what){
case cs0:
break;
case cs1:
break;
case cs2:
break;
default:
break;
}
switch (what): // syntax sugar , pythonic ?
case cs0:
break;
case cs1:
break;
case cs2:
break;
default:
break;
endswitch;
Loop
基本上和 C 系差不多,但有迭代器的用法 (Array 時再說),注意一下。1
2
3
4
5
6
7
8
9
10for($i = 0 ; $i < 10 ; $i++){
echo $i;
}
while(exp){}
while(exp): // syntax sugar
endwhile;
do{}while(0);
Array
物件化,沒有用符號下去載,直接拿一個物件名,注意 new。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18$myArray = new Array(1 , 2 , 3);
array_push($myArray , 4);
unset($myArray , 3); // remove element 4
unset($myArray); // remove whole aray
foreach($myArray as $e){ // iterator
echo $e.'<br>';
}
$twoDimAry = new Array(Array() , Array());
$myAryMap = new Array('keyOne' => 1 ,
'keyTwo' => 2 ,
'keyThree' => 3);
foreach($myAryMap as $key => $val){ // array map iterator
echo $key.' => '.$val;
}
OOP
寫個物件來記最快。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27class Animal{
public $age;
}
class Person extends Animal {
public $name;
static public function say($word){
echo $word.'<br>';
}
const die_age = 30; // we don't need $
public function __construct($age){
$this->age = $age;
}
public function getOlder(){
$this->age += 1;
}
}
$nobodyzxc = new Person(20);
echo $nobodyzxc->age;
$nobodyzxc->getOlder();
Person::say("there , there");