第一篇:黑馬程序員_PHP_課程同步筆記day30:PHP類中關鍵字
【黑馬程序員濟南】PHP課程同步筆記day30:PHP類中
關鍵字
今天我來為大家講解一下PHP類中的一些關鍵字: parent和self關鍵字 parent:
用在一個類的一個方法中;
代表這個類的“父類”——注意,是代表一個類,不是類的對象;
但:實際應用中,常常會看起來“代表”這個類的父類對象——因為用的時候,是使用了父類的對象來調用某個方法而產生了所謂的對象傳遞; [PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著 1;//聲明靜態屬12 性 13 } 14 15 class B extends A{ static function f1(){ echo “父類的靜態屬性s1:”.parent::$s1;echo “父類的常量PI:”.parent::PI;} } B::f1();顯示結果:
父類的靜態屬性s1:1
父類的常量PI:3.14
黑馬程序員濟南中心 編著
self:
用在一個類的一個方法中;
代表這個類“本身”——還是代表一個類,而不是類的對象; [PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著
己的常量PI:”.self::PI;} } B::f1();典型使用1:
在構造方法中,調用父類的構造方法,以完成對象的一些共同的數據初始化工作。[PHP] 純文本查看 復制代碼 ? 01
04 class Member{ 05 public $name;//聲明一個變量 06 public $salary;//聲明一個變量 07 //創建一個構造方法 08 function
09 __construct($name,$salary){ 10 $this->name = $name;//把實例11 化類時的實參傳遞給之前聲明好的變量 12 $this->salary = $salary;//把實例13 化類時的實參傳遞給之前聲明好的變量
黑馬程序員濟南中心 編著 } 15 } 16 class Teacher extends Member{ 17 public $edu;//聲明一個變量 18 //創建一個構造方法 19 function __construct($name,$salary,$edu){ 21 //$this->name = $name;22 //$this->salary = $salary;23 //將上面兩行的內容用下面一行類24 代替 //調用父類的構造方法,去完成一個26 共同屬性數據的初始化 parent::__construct($name,$salar28 y);29 //把實例化類時的實參傳遞給之前聲30 明好的變量
$this->edu = $edu;32 } 33 } 34 class Student extends Member{ 35 public $age;//聲明一個變量
黑馬程序員濟南中心 編著
//創建一個構造方法 37 function
__construct($name,$salary,$age){ 39
//調用父類的構造方法,去完成一個41 共同屬性數據的初始化
parent::__construct($name,$salary);//把實例化類時的實參傳遞給之前聲明好的變量
$this->age = $age;} } $t1 = new Teacher(“老師”,1000,“大學”);echo “
”;var_dump($t1);echo “
”;$s1 = new Student(“學生”,100,18);var_dump($s1);
黑馬程序員濟南中心 編著
不知道大家對今天講解的parent和self關鍵字學習的程度如何啊?如果有興趣,歡迎來黑馬程序員濟南中心來詳細了解PHP~
黑馬程序員濟南中心 編著
第二篇:黑馬程序員_PHP_課程同步筆記day18:PHP函數
【黑馬程序員】PHP課程同步筆記day18:PHP函數
PHP函數 1.概念
將一段常用的功能代碼,進行封裝,然后起個名字,叫”函數” 使用函數,可以減少我們的工作量。對于后期的項目維護,十分方便。2.函數定義格式
Function functionName(形參1,形參2,形參3......){
函數的功能代碼
[return 參數r] } 函數語法格式說明:
Function是系統關鍵字,不分大小寫。
functionName是自定義的函數名稱。函數名的命名規則與變量一樣,只是不加$符號。
()定義函數時的參數,該參數又稱為”形參”。
形式參數:主要用來接收調用函數者,傳遞過來的數據。
形參可以是多個,多個形參之間用逗號隔開,也可以沒有形參
形參其實就是一個變量的名稱,主要用來臨時存儲數據的。{}是函數的功能代碼。Return語句:
向誰返回內容?誰調用了該函數,就向誰返回。
返回什么內容?該內容的類型不限制,可以是任何數據類型
黑馬程序員濟南中心 編著
Return語句,一旦執行,函數將中止。也就是return語句之后的函數代碼不再執行。
Return 語句返回一個值,并退出函數。
3.函數調用
函數定義是不會自動執行的。函數必須要經過調用,才能看到結果 調用函數和定義函數不分順序。4.函數參數
a)形式參數(形參):形參主要用來接收調用函數傳遞過來的數據。
i.形參一般是變量,不能是具體的值
ii.形參只能在函數內部使用
b)實際參數(實參):向定義函數傳遞的數據
i.實參可以是具體值,也可以是一個變量
c)形參和實參的個數,一般情況下必須一致 Function showInfo($a){ Echo “OK”;} $a = 100;showInfo($a);函數參數傳遞 1.值傳遞(拷貝傳值)將一個變量的值,”拷貝”一份,傳給形參
黑馬程序員濟南中心 編著
在函數內部,對形參進行了修改,而函數外的這個變量不會改變 函數內的形參,與函數外的實參,是相互獨立的,沒有任何聯系的
在PHP中,默認”值傳遞”的有:字符型、整型、浮點型、布爾型、數組、NULL
2.引用傳遞
將一個變量的地址傳給形參,即形參與變量指向的是”同一物”.變量和參數之間是相互聯系,修改一個,另一個會跟著變。
參數在使用引用傳遞時,需要在”形參”前加一個”&”符號。”實參”前不能添加。
默認引用傳地址:資源和對象
黑馬程序員濟南中心 編著
3.默認參數
PHP支持默認參數。
當實參格式少于形參個數時,那么少的那個實參可以用末日的形參來代替
匿名函數
1.概念
沒有名字的函數就是匿名函數,它不能單獨定義也不能單獨調用 匿名函數一般用來給其他變量賦值的。
黑馬程序員濟南中心 編著
2.匿名函數的兩種用法
i.將匿名函數當成一個數據,賦給其他變量
ii.將匿名函數作為函數的參數來使用
變量作用域
變量作用域:就是變量生效的范圍
在PHP中三種變量作用域:全局變量、局部變量、超全局變量。1.全局變量
全局變量:在函數外部定義的變量,稱為”全局變量”。
黑馬程序員濟南中心 編著
全局變量,在網頁執行完畢,就消失了。在JS中,全局變量,可以直接在函數內部來使用 在PHP中,全局變量不能直接在函數內部使用 2.局部變量
局部變量:在函數內部定義的變量,稱為”局部變量”。局部變量,只能在函數內部來使用 局部變量,在函數執行完畢后就消失了。3.在局部作用域中訪問全局變量---global關鍵字
Global關鍵字,只能在函數內部來使用
不能在使用global關鍵字時,直接給變量賦值。只能是先聲明為全局,再賦值。
$GLOBALS超全局數組
“超全局數組變量”可以在網頁的任何地方使用,包括函數內部和函數外部。$GLOBALS超全局數組中包含的內容有:$_GET、$_POST、$_COOKIE、$_FILES
黑馬程序員濟南中心 編著
第三篇:黑馬程序員_PHP_課程同步筆記day34:PHP類其他魔術方法
【黑馬程序員濟南】PHP類其他魔術方法
序列化:
就是將一個變量的“內存數據形式”,轉換為“硬盤數據形式”的過程。
分2步就可以:
1,$str = serialize($變量);//該函數將該變量數據,轉換為一個字符串
2,file_put_contents(“文本文件名”, $str);//將該字符串保存到該文件中。[PHP] 純文本查看 復制代碼 ? 01 5.5,'bbcc'=>true);13 $data3 = new A();
黑馬程序員濟南中心 編著 //開始轉換得到一個字符串 16 $str1 = serialize($data1);17 $str2 = serialize($data2);18 $str3 = serialize($data3);19 //開始寫入硬盤中 file_put_contents('./file1.txt',$str1);22 file_put_contents('./file2.txt',$str2);23 file_put_contents('./file3.txt',$str3);24
[align=left] 反序列化:
將已經存到硬盤的變量數據,轉換(恢復)到內存數據(變量)形式的過程。同樣分2步:
1,$str = file_get_contents(文本文件名);
//讀取出序列化之后所存儲的文件內容(就是字符串)
2,$變量 = unserialize($str);
//將該字符串恢復為變量(數據);
[PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著
02 //演示3中數據的序列化結果 03 class A{ 04 public $p1 = 1;05 protected $p2 = 2;06 private $p3 = 3;07 } 08
09 //開始從硬盤中讀取數據(字符串)10 $str1 = file_get_contents('./file1.txt');11 $str2 = file_get_contents('./file2.txt');12 $str3 = file_get_contents('./file3.txt');13 //開始轉換得到一個字符串 15 $data1 = unserialize($str1);16 $data2 = unserialize($str2);17 $data3 = unserialize($str3);18 var_dump($data1);20 var_dump($data2);21 var_dump($data3);結果為: float(1.1)
黑馬程序員濟南中心 編著
array(3){[0]=>string(2)“aa” [5]=>float(5.5)[“bbcc”]=>bool(true)} object(A)#1(3){[“p1”]=>int(1)[“p2”:protected]=>int(2)[“p3”:“A”:private]=>int(3)} __sleep():
該魔術方法是對一個對象進行“序列化”的時候,會被自動調用。
此時,在該方法中,我們就可以(而且必須)返回一個數組,該數組中含所有我們“想要”對該對象的屬性進行序列化的屬性名。[PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著 }
__wakeup()
該魔術方法是對一個對象進行“反序列化”的時候,會被自動調用。
此時,該對象的屬性值,就會恢復到“原來的數據”
但:如果某個屬性當時并沒有做序列化,則此時就不會恢復為原來對象的數據,而是恢復為該類中的初始數據; [PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著 $this->p1 = $p1;13 $this->p2 = $p2;14 $this->p3 = $p3;15 } 16 function __sleep(){ 17 return 18 array(“p1”,“p3”);19 } 20 function 21 __wakeup(){ 22 echo “對象蘇醒23 了。。”;24 } 25 } 26
$s1 = new S(11,12,13);$str = serialize($s1);var_dump($)
[align=left]
黑馬程序員濟南中心 編著
不知道大家對今天講的PHP類其他魔術方法相關技術學習的怎么樣啊?有什么疑問歡迎來黑馬程序員濟南中心來咨詢喲~
黑馬程序員濟南中心 編著
第四篇:黑馬程序員_PHP_課程同步筆記day13:PHP基礎介紹
【黑馬程序員】PHP課程同步筆記day13:PHP基礎介紹
1.語言基礎
PHP文件的訪問,必須要經過虛擬空間(域名),才能訪問PHP文件,不能本地直接訪問 Php文件的擴展名:.php Php代碼的標記: Php區分大小寫。但是函數名和關鍵字不區分大小寫。每一條語句,必須以英文下的分號(;)結束。2.語句結束符
每一條PHP語句,都要以英文狀態下的分號(;)結束。
PHP中的語法結構(if、switch、for、while、do while、function、foreach等)不能加分號(;)結尾。
如果PHP代碼中,只有一條語句的話,可以省略分號;如果是多條PHP語句,最后一條語句可以省略分號。3.注釋
HTML注釋: CSS注釋:/* */
黑馬程序員濟南中心 編著
JS注釋://或/* */ PHP的單行注釋://或# PHP的多行注釋:/* */ 注意:
PHP多行注釋不能嵌套
PHP的注釋在瀏覽器端同樣看不見
PHP變量
1.變量的概念
變量是臨時存儲數據的容器 變量是在內存中存在和運行的
變量是一個代號。用變量來代替一個數據 2.變量命名規則
變量名稱包含的字符有:a-z、A-Z、0-
9、_ 變量名只能以字母或下劃線開頭 變量名不能以數字開頭
PHP的變量前,必須加”$”符號。”$”不是變量名稱的一部分。”$”之后為變量名
PHP變量是區分大小寫的
PHP關鍵字,也可以作為變量名稱。如$if、$while等 PHP長文件名如何表示
“駝峰式命名”:$getUserName “下劃線式命名”:$get_user_name
黑馬程序員濟南中心 編著
PHP變量操作
1.定義變量
PHP的變量不用提前定義,用的時候直接賦值即可.$name = “abc”;JS的變量在使用時要提前聲明。Var name=”abc”;2.變量賦值
使用”=”賦值號,給變量進行賦值(往容器中裝東西)。
“=”含義:將”=”右邊的運算結果,賦值給”=”左邊的變量名稱,左邊不能是一個運算表達式。
舉例:$a = $b + 10*24-26 3.讀取變量值
$name = “Mary”;Echo “我的名字叫$name”;4.判斷變量是否存在isset()如果一個變量的值不等于NULL,就返回TRUE,反之返回FALSE 5.判斷變量是否為空empty()對于empty來說,0、””、”0”、0.0、NULL、FALSE、array()認為是空,返回TRUE,反之就返回FALSE.6.刪除變量unset()Unset()函數
語法:void unset(mixed $var[,mixed$....])提示:變量被刪除后,變量的返回值為NULL。
黑馬程序員濟南中心 編著
變量的值傳遞和引用傳遞
1、值傳遞
將變量的值”復制”一份,傳給另一個變量。
這兩個變量之間沒有任何聯系,修改其中一個,另一個變量的值不會改變。在PHP中,哪些數據類型,默認是”值傳遞”。包括:字符型、整形、浮點型、布爾型、數組、NULL。
在JS中,默認是”值傳遞”包括:字符型、數值型、布爾型、undefined、NULL
黑馬程序員濟南中心 編著
2.引用傳地址
將一個變量的數據地址,”復制”一份,傳給另一個變量。這兩個變量,指向同一份數據。
在PHP中,默認傳地址的數據類型有:對象、資源。在JS中,默認傳地址的數據類型有:數組、對象、函數。
但是在PHP 中,也可以讓所有其他類似數據,都變成”引用傳地址”,只需在引用的變量名前加”&”符號.黑馬程序員濟南中心 編著
可變變量
一個變量的名稱,可以用另一個變量的值來充當。如$$name;
實例:批量獲取表單提交值 代碼:
if(isset($_POST['ac'])&&$_POST['ac'] == “login”){
黑馬程序員濟南中心 編著
foreach($_POST as $key=>$value){
/*
$$key = $value
$username = $key;
$password = $value
*/
$$key = $value;//可變變量
}
$sql = “INSERT INTO 007_news(username,password)VALUES('$username','$password')”;
echo $sql.“
”;} ?> PHP超全局變量數組
1.PHP中的超全局變量數組
$_GET:獲取地址欄中傳遞的參數。
黑馬程序員濟南中心 編著
$_POST:獲取表單method=”post”提交的數據
$_REQUEST:包含$_GET、$_POST、$_COOKIE上數組中的數據 $_SERVER:獲取apache服務器或執行環境的相關信息 $GLOBALS:獲取全局變量的各個數據 $_SESSION:跟蹤用戶 $_COOKIE:跟蹤用戶 $_FILES:上傳文件 2.超全局變量$_POST的使用
描述:主要用來獲取表單method=”post”提交的數據。舉例:$username = $_POST[‘username’];3.實例:簡單PHP計算器 代碼實現:
if(isset($_POST['ac'])&&$_POST['ac'] == ”login“){
// 獲取表單提交值
$value1 = $_POST['value1'];
$value2 = $_POST['value2'];
$operator = $_POST['operator'];
//計算結果
switch($operator){
黑馬程序員濟南中心 編著
case 1:
$result = $value1 + $value2;
break;
case 2:
$result = $value1-$value2;
break;
case 3:
$result = $value1 * $value2;
break;
case 4:
$result = $value1 / $value2;
break;
case 5:
$result = $value1 % $value2;
} }else{
//網頁首頁下載完成時,變量初始化
$value1 = ”“;
$value2 = ”“;
$operator =1;
$result = ”“;}
黑馬程序員濟南中心 編著
?>
超全局變量$_GET的使用$_GET可以獲取地址欄中參數的數組
發送GET數據的方法總結
1.通過表單method=”get”發送
2.通過發送GET數據
黑馬程序員濟南中心 編著
3.通過JS的location對象也可以發送GET數據
4.使用PHP的header()函數傳遞參數
黑馬程序員濟南中心 編著
黑馬程序員濟南中心 編著
第五篇:黑馬程序員_PHP_課程同步筆記day33:類和對象的其他相關技術[推薦]
類和對象的其他相關技術
類的自動加載: 基本概念:
當在一個代碼中,需要使用一個類(比如new),但此時,在這行代碼之前,都沒有出現過該類的定義,則php有一種機制,可以讓系統這個時候去調用一個函數,在該函數中,我們就可以預先寫好加載類的代碼——這樣就實現了類的自動加載。
該函數就是:__autoload()該函數使用形式如下:
function __autoload($class_name){
//這里就可以去寫加載類的代碼,其中:
//$class_name就代表“正需要”的那個類名;
} [PHP] 純文本查看 復制代碼 ? 1
黑馬程序員濟南中心 編著
可見,實現這種類的自動加載的方便性,需要做到:
1,類文件名有一個統一的形式:比如:類名.clsss.php
2,統一都放在一個文件夾中;
3,盡可能做到:一個類文件中,只放一個類的定義;
自定義類的加載函數
使用下述函數,可以人為定義“多個”自動加載函數(這些函數的作用跟__autoload)一樣。使用形式:
spl_autoload_register(“自動加載函數名1”);
spl_autoload_register(“自動加載函數名2”);
。。
然后就可以去定義這些函數了
在運行的時候,如果需要一個類,就先調用第1個函數去“試圖”加載該類,如果在該函數中沒有加載成功,就會繼續調用下一個函數繼續“試圖”加載該類,依此類推。。舉例:
[PHP] 純文本查看 復制代碼 ? 01
04 spl_autoload_register(“auto1”);
黑馬程序員濟南中心 編著
05 spl_autoload_register(“auto2”);06 function auto1($class_name){ 07 echo “
進入auto1,需要:$class_name”;08 $file = “./{$class_name}.class.php”;09 if(file_exists($file)){ 10 include_one $file;11 } 12 } 13 function auto2($class_name){ 14 echo “
進入auto2,需要:$class_name”;15 $file = “./{$class_name}.class.php”;16 if(file_exists($file)){ 17 include_one $file;18 } 19 } 20 $obj1 = new A();22 echo “
”;23 var_dump($obj1);24 $obj2 = new B();26 echo “
”;
黑馬程序員濟南中心 編著 var_dump($obj2);
展示結果為: 進入auto1,需要:A object(A)#1(0){} 進入auto1,需要:B 進入auto2,需要:B object(B)#2(0){}
對象的復制
$obj1 = new A();
$obj2 = $obj1;
//這里,雖然是值傳遞,但因為對象數據存儲的特殊性,并沒有復制對象數據本身
//即,并沒有生成一個新對象;
要想復制一個對象——得到一個完完全全的相同的對象,只能這樣:
$obj3 = clone $obj1;[PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著
05 } 06
07 $obj1 = new A();08 $obj2 = $obj1;09 $obj3 = clone $obj1;10 var_dump($obj1);11 var_dump($obj2);12 var_dump($obj3);13 $obj1->p1 = 11;15 var_dump($obj1);16 var_dump($obj2);17 var_dump($obj3);展示效果:
object(A)#1(1){[“p1”]=>int(1)} object(A)#1(1){[“p1”]=>int(1)} object(A)#2(1){[“p1”]=>int(1)}
object(A)#1(1){[“p1”]=>int(11)} object(A)#1(1){[“p1”]=>int(11)} object(A)#2(1){[“p1”]=>int(1)}
黑馬程序員濟南中心 編著
可見,普通賦值所得到的對象,仍然是原來的對象;
只有clone所得到的對象,才是一個全新的對象; 注意:
1,當對一個對象進行克隆的時候,就會自動調用系統中的__clone()魔術方法(如果有);
2,因此,對于單例類的需求來說,就應該做到:禁止克隆,寫法:
private function __clone(){ }
對象的遍歷
跟數組類似,對象的“所有屬性”,也是可以進行遍歷的——一個一個取出。
形式:
foreach($對象 as $prop => $value){
//$prop表示屬性名;
//$value表示對應的屬性值;
} 注意:
其實能取到的屬性數據,只是在該位置可以訪問(有權限訪問)到的那些。[PHP] 純文本查看 復制代碼 ? 01
黑馬程序員濟南中心 編著
04 05 class A{ 06 public $p1 = 1;07 protected $p2 08 = 2;09 private $p3 = 3;10 static $p4 = 4;11 function 12 showInfo(){ 13 foreach($this 14 as $prop=>$value){ 16 echo “屬性17 $prop = $value”;18 } 19 } 20 } 21
$a1 = new A();foreach($a1 as $prop=>$value){ echo “屬性
黑馬程序員濟南中心 編著
$prop = $value”;}
$a1->showInfo();展示效果: 屬性p1 = 1;
屬性p1 = 1 屬性p2 =2 屬性p3 = 3
不知道大家對今天講的類和對象的其他相關技術學習的怎么樣啊?有什么疑問歡迎來黑馬程序員濟南中心來咨詢喲~
黑馬程序員濟南中心 編著