一、PHP入門
1、php是一種動態網站開發的腳本語言,動態語言特點是交互性,會有數據的傳遞,而php作爲中間人需要進行數據的傳遞,傳遞的前提就是php能自己存儲數據(臨時存儲);
2、變量:是用來儲存數據的;存在名字,通過名字來訪問:數據;是可以改變的:數據;
3、定義:在系統中增加對應的變量名字(內存);
4、賦值:可以將數據賦值給變量名
解決中文亂碼:hearder(‘Content-type:text/html;charset=utf-8’);
5、如何定義一個變量:
1、以$開頭 $變量名;
2、var_dump(變量) 頁面打印
6、定義一個常量 : const 常量名(大寫,不需要$);
7、數據類型:
int(整數),
float(小數),
string; 寫法:可以用引號,定界符(<<<AAA(界限名) 內容 AAA(界限名,要頂格寫));如果用雙引號定義,其中輸出變量{變量名}
如果用單引號定義,其中要輸出變量,必須拼接;
boolean
null,
object,
array,
resource(資源);
8、會被轉換成false的情況:
1、'';
2、0;
3、[];
4、null
5、空對象
9、字符串的拼接:'.'
10、數據轉換:
1、settype(變量名,'轉換數據類型名') 改變變量本身
2、$i=(轉換數據類型名) 變量名 生產一個新的變量
11、運算符:+-*/% += -= *= /= && || !
三元運算符:條件?對的值:錯的值
i++ 先做別人的事,自己在加1
二、PHP函數和內置函數;
1、自定義函數:函數的三要素:函數名,參數,返回值;
1、引用地址參數的傳遞&參數;在傳參的時候把實際參數本身傳入到函數中。
2、帶默認參數傳遞:可以在定義的時候給形參賦默認值,統一放在右邊
3、可變數量參數的傳遞: 形參:…$數組名;(支持php5.6以後的版本)
5.6以前版本:形參不寫,在功能體中使用$數組名=func_get_args();
4、全局變量:在函數內外都可以使用
1)、 在函數中使用全局變量:先GLOBAL+全局變量名聲明 後使用;
2)、$GLOBALS[全局變量名]訪問相對應的全局變量。
5、局部變量:只能在函數作用域內纔可以使用;
2、變量內置函數:
1、轉換數據類型:
settype(變量,數據類型) 返回值:true或false;
2、變量是否設置:
isset(變量名) 返回值:true 或 false;
3、輸出函數:echo與print的區別:
1、不同:echo沒有返回值,print有返回值
2、echo與print不可以打印數組和對象;
3、var_dump和print_r
1)、print_r只會顯示值,var_dump值和數據類型;
2)、共同點:都可以打印數組、對象、其他數據類型;
4、時間函數:
1、time() 獲得當前時間的時間戳
2、date('Y/m/d H:i:s',time())
注:1、date_default_timezone_set('PRC') 設置中國所在時區;
2、修改服務器的配置文件:php.ini-->timeZone--->去掉;---->設置時區(PRC);
3、getdate(時間戳)獲取時間數組;
4、strtotime(); 字符串轉換爲時間戳
5、mktime:返回時間戳;
三、PHP數組
1、一維數組定義:
1、下標數組:數組名=[值1,值2,值3,值4…..]; 下標是數字
2、關聯數組:下標不爲數字, 數組名=[鍵1=>值1,鍵2=>值2…..];
2、下標一些特殊情況;
1、十進制的整型字符串爲下標---->轉爲整型;
2、true或false----->轉爲整型(1,0);
3、浮點型數---->轉爲整型;
4、null---->轉爲''(空字符串);
5、鍵名相同的情況下,會被覆蓋;
6、鍵名不寫的情況下,默認最大的整型+1;
3、數組的遍歷:
1、foreach($arr as $key=>$value){}
4、數組的添加:array_push($arr,添加的值);
5、數組鍵值互換:array_flip($arr);
6、產生數組:range(開始位置,結束位置,間隔);
7、計算數組長度:count()=sizeof();
8、查找:array_search(要查找的值,數組);
9、對數字進行增刪改查:
array_splice(數組,起始位置,刪除幾個,替換幾個);
四、PHP面向對象
1、面向對象OOP的三大特性:
封裝(不關注具體的實現,只關注整體,隱祕性)、
繼承
多態;
2、類是一個模板,抽象的;對象是一個具體的實物,
3、PHP類的定義:class 類名{屬性、構造函數、方法、析構函數};
4、屬性的聲明: 訪問修飾符:public 變量名;
5、訪問修飾符:
public(公共的,內外都可以訪問)、
private(私有屬性,只可以在類的內部訪問);
protected(受保護的);
6、構造函數:public function __construct(){} 在實例化(new)的時候自動調用、屬性的賦值。
7、析構函數:public function __destruct(){} 在關閉資源或者銷燬變量時使用。
8、類的內部訪問屬性:$this->屬性名;類的外部訪問屬性:對象名->屬性
9、繼承的聲明:extends聲明;
10、繼承的格式:引用父類資源 class subClass extend superClass{};
其中 subClass爲子類名稱,superClass爲父類名稱;
11、父類的私有屬性無法被繼承;
12、父類保護屬性只能在父類內部和子類內部使用;
13、多態:重寫父類的方法,子類調用方法時,重寫父類方法;
14、final class 類名: 無法被繼承;
15、abstract :抽象類:
語法:abstract class 類名{}
16、有抽象方法的類,一定是抽象類,
17、抽象方法沒有具體的實現,抽象方法一定要被子類實現。
18、設計模式(單例): 某個類只能被實例化一次
1、將構造函數私有化;
2、定義一個靜態方法
3、定義一個靜態屬性
4、判斷靜態屬性是否已經賦值;
19、靜態變量:聲明:static 只能被初始化一次;
五、PHP文件處理
1、文件操作
1、打開文件:fopen(參數1,參數2)
參數:參數1:文件路徑
參數2:打開方式:a+、r+、w+
會自動創建文件的打開方式 :w+(會覆蓋原文件) ,a+;
a+與r+的區別:a+是從尾部添加,r+從頭部覆蓋;
2、文件的寫入:fwrite(資源路徑,“寫入內容”);
3、文件的讀取:fgets(資源類型) 每次讀取一行;
4、判斷文件是否到達末尾:feof 到達true;未到達false;
5、寫入數組到文件
1、先定義一個數組;
2、將數組轉換成JSON字符串 :json_encode() ;
6、文件上傳
1、打開對應版本PHP的配置文件PHP.ini->upload,確保file_uploads=ON打開;
2、編寫一個前端頁面
1、<from action="提交路徑" method="提交方式" enctype=“multipart/form-data”;
2、ipnput type=“file” name=“提交的名字”;
3、按鈕:input type=“sumbit”;
3、action.php
1、接收到文件 $_FILES['提交的名字'];
2、根據接收的結果的數組,編輯業務邏輯;
3、move_uploaded_file 去把臨時文件 移動到工程目錄下(iconv 轉碼);
4、保存路徑;
六、PHP網頁基礎
1、PHP工作原理
2、網絡的傳輸格式:get、post
1、get 直接在url上傳遞數據,不安全
2、post相對安全,信息量大;
3、後端接收數據
1、get:$_GET['提交的名字']
2、post:$_POST['提交的名字'];
3、通用接收:$_REQUEST['提交的名字'];
4、url:http://域名(IP地址):post/文件名?key1=val1&key2=val2
七、Cookie與Session
1、cookie與session都是存儲數據的緩存
2、cookie存儲在客戶端,session存儲在服務端;
3、設置cookie
setcookie(key,val,過期時間,地址)
4、cookie存儲數組:serialize(數組名);將數組序列化爲字符串
cookie取數組 unserialize($_COOKIE[KEY]) ; 將字符串反序列化;
5、session工作原理:當session_star()代碼執行後,服務端生成一個臨時的文件,給客戶端發送一個PHESESSIONID,PHESESSIONID與臨時文件名相
八、AJAX
1、ajax:是一個網絡請求,http協議,一個短連接;
2、ajax與form表單的不同
1、form表單需要跳轉頁面
2、ajax不需要跳轉頁面
3、原生ajax是利用XMLHttpRequest對象實現的,
XMLHttpRequest.open("提交方式","url",true);
XMLHttpRequest.send()
4、jq 與ajax請求
語法:$.ajax({
type:"" 請求類型;
url:"" 請求路徑;
dataType:"" 預期服務器返回的數據類型;
success:function(){} 成功之後執行的回調函數
error:function(){} 失敗之後執行的回調函數
})