php詳解及基本知識
對於初次學習php的來說,需要在自己電腦上搭建php環境。省去空間和上傳的麻煩!
這裡推薦一個軟體:WampServer是一款由法國人開發的Apache Web伺服器、PHP直譯器以及MySQL資料庫的整合軟體包。免去了開發人員將時間花費在繁瑣的配置環境過程,從而騰出更多精力去做開發。
這篇文章講的安裝很好了,wampserver安裝詳解
1.php入門原理
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文字前處理器”)是一種通用開源指令碼語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的程式語言相比,PHP是將程式嵌入到HTML(標準通用標記語言下的一個應用)文件中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化程式碼執行,使程式碼執行更快。
(1)php執行的原理:
最終解析成:
訪問php頁面是看不到PHP程式碼的;
(2)兩種PHP執行方式
(1) 通過虛擬路徑訪問,也就是URL地址:單執行緒;
(2) CLI執行方式:真正的多執行緒
2.php語法
(1).php指令分隔符“分號”
php在程式中使用功能執行語句,例如變數的宣告、內容的輸出、函式的呼叫等,是用來在程式中執行某些特定功能的語句,這種語句也可以成為指令,php需要在每個指令後用分號結束。
記得剛學著做php原生態的時候,找個bug半天就是沒有找到,後面發現是有個語句分號沒寫,以前用慣了javascript的語法,有時候習慣不加分號。
ps:養成良好的程式碼格式規範還是有必要的。
(2)程式碼註釋
php註釋的三種形式:
以“/”和“/”閉合多行註釋符,
“//”和”#”開始的單行註釋符。
(3)變數
1.php變數的定義是使用$。
1) 以$開頭,$後面不能直接跟數字,後面跟字母、數字、下劃線;
2) 變數名稱區分大小寫,PHP關鍵詞不區分大小寫;
3)第一次賦值,就建立了變數。必須使用"$"後跟變數名錶示。再次給該變數賦值會覆蓋之前的變數。
2.變數的型別
4種標量型別:boolean(布林型)、integer(整型)、float(浮點型)、string(字串)
2種複合型別:array(陣列)、object(物件)
2種特殊型別:resource(資源)、NULL
如果想看某個表示式的值和型別,可以使用函式var_dump() 。
3.變數賦值
1)賦值傳值:
$h = 120;
$q = $h; //將$h的值拷貝給$q
$h = 135;
echo $h; //輸出135
2)引用傳值:
$h = 155;
$q = &$h; //引用傳值,表示$h的地址傳給$q
$q = 195;
echo $h; //輸出195
3)可變變數
$a1 = array('username' => '鄧海濤', 'passwd'=>'123456', 'tel'=>'15982369', 'email'=>'[email protected]');
foreach ($a1 as $key122 => $value134) {
${$key122} = $value134;
}
echo $email;
echo $tel;
4.變數檢測
1)is_array:是否是陣列;
2)is_bool :是否是布林型;
3)is_float :是否是浮點型;
4)is_int :是否是整數;
5)is_null :是否為 NULL;
6)is_numeric :是否為數字或數字字串;
7)is_object :是否是一個物件;
8)is_resource :是否為資源型別;
9)is_string :是否是字串;
(4)陣列(arry)
使用print_r()函式檢視陣列中的全部內容。
陣列分索引陣列和關聯陣列,用array定義一個數組,陣列的元素可以是任意型別的值;如果陣列的元素還是陣列,那麼該變數就是多維陣列;
//PHP陣列的定義
$array1 = array();
// $array1 = []; //用於7.0版本以後
//索引陣列
$student = array('樑剛','鄭鴻斌','易航','譚俊');//索引從0開始
$num = array(1, 2, 3, 4, 5);
//計算陣列的元素個數:count();
$an = count($student);
echo $an;
//關聯陣列
$student1 = array('name'=>'趙梓茗', 'age'=>18, 'height'=>190.02);
//多維陣列
$students = array(
0=>array('name'=>array('realname'=>'鄧海濤', 'age'=>18, 'height'=>190),
1=>array('name'=>'鄧海濤', 'age'=>18, 'height'=>190),
2=>array('name'=>'鄧海濤', 'age'=>18, 'height'=>190),
);
var_dump($students);
3.php語句操作詳解
1.php的輸出方式
1)Echo:輸出字串;
2)print_r() :列印變數的易於理解的資訊;
3)var_dump():列印易於理解的完整資料資訊及結構,包括字串長度;
4)exit():列印並停止執行PHP指令碼;
die():同exit;
2.單引號和雙引號
1)雙引號裡面的變數會解析,單引號不會解析;
2)雙引號裡面的變數如果還要內容,最好用{}括起來;
3)推薦使用單引號:執行效率稍微高點;
4)如果輸出單引號或者雙引號,需要轉義;
3.SESSION和COOKIE
1)SESSION:為每個訪問者建立一個唯一 id ,並基於這個ID 來儲存資訊,Session_id()返回當前會話id;
2)通過session_start() 啟動session會話(必須位於 <html> 標籤之前);
3)$_SESSION[‘username’] = ’使用者賬號’; 用於設定session值;
4)$_SESSION[‘username’] 用於獲取session值;
5)unset() 用於釋放指定的session變數;
6)session_destroy() 將重置所有session資料;
7)cookie 資訊儲存在使用者電腦中,每當使用者訪問網頁時同時會發送cookie ;
setcookie(name, value, expire); 使用者設定cookie內容;
$_COOKIE[“user”]用於獲取cookie的值;
setcookie(“user”, “”, time()-3600);用於刪除cookie內容 ;
4.表單處理
1)Action指定後臺處理的頁面,method指定資料傳輸方式:
2)PHP如何接收POST過來的資料:
獲取指定輸入框的資料:
全部資料存放在一個數據裡面的:
3)PHP接收GET過來的資料方式:$_GET[‘username’];
5.流程控制
陣列一般使用foreach遍歷:
$arrar1 = array(1, 56, -89, 120, 568, 1028, 56, 3);
$max = $arrar1[0];
foreach ($arrar1 as $key => $value) {
if($max < $value){
$max = $value;
}
}
echo $max;
6.函式
1)函式是可重複使用的程式碼塊,使程式結構清晰,易於維護。
2)函式內部使用外部的變數使用global;
3)函式分為自定義函式和內建函式;
function fn(引數1,引數2,引數3…) {
執行的程式碼;
Return 返回的資料,可以是陣列、物件、字串等
}
7.檔案讀寫
1)開啟檔案:
2)讀取開啟的檔案指定長度的內容:fread(
3)讀取檔案單行內容:Fgets($fh);
一行一行讀取檔案所有內容:
while(!feof($fh)){
$str1 = fgets($fh);
}
4)檔案寫入:
fwrite($fh, “訪客1\tip:112.105.213.20\t時間:2017-03-06 16:42:21 " . PHP_EOL);
5)關閉開啟的檔案:fclose($fh);
6)一次性獲取檔案內容和寫入檔案的方式:
//讀取遠端檔案內容
$str = file_get_contents('http://localhost/indexmk/preview.do');
var_dump($str);
//寫入檔案
file_put_contents('a.html', $str);
8.檔案上傳
1)表單method必需為POST;
2)指定表單enctype屬性值為”multipart/form-data” :
enctype:encodetype,即編碼型別;
multipart/form-data:表單資料由多部分構成,如文字、二進位制資料檔案等;
3)指定input標籤的type為file:
<input type=“file” name=“uploadfile” id=“uploadfile” />;
4)使用$_FILES[‘uploadfile’]獲取上傳檔案的相關資訊;
5)move_uploaded_file() :將上傳的檔案從臨時空間移動到你想儲存的目錄:
move_uploaded_file($_FILES["uploadfile"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
4.面向物件程式設計
1)面向物件程式設計簡稱OOP( Object-oriented programming );
2)類是具有相同屬性和服務的一組物件的集合;
3)物件是類的例項;
4)如何定義一個類:
class Person
{
//類的屬性
public $name;
//建構函式,對類和屬性進行初始化
function __construct($name1, $age1){
$this->name = $name1;
}
}
5)例項化一個物件
$person1 = new Person('李鑫', 170);
//呼叫物件的屬性
echo $person1->name;
6)成員變數
類中的變數,也稱為屬性。成員變數用來儲存資訊資料,或與成員方法進行互動來實現某項功能。
定義成員變數的格式為:關鍵字 成員變數名。
訪問成員變數和訪問成員方法是一樣的。只要把成員方法換成成員變數即可,格式為:
物件名 -> 成員變數
7)成員方法
類中的函式被稱為成員方法。
函式和成員方法唯一的區別就是,函式實現的是某個獨立的功能,而成員方法是實現類中的一個行為,是類的一部分。
class Student{
//學生的名字
var $name;
function setName($name){
//把區域性變數給當前物件的全域性變數賦值
$this->name = $name;
}
function getName(){
//返回當前物件全域性變數$name
return $this->name;
}
}
8)PHP 建構函式
建構函式 ,是一種特殊的方法。主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值;
function __construct( $name, $age )
{
$this->name = $name;
$this->age= $age;
}
9)解構函式
析構方法的作用和構造方法正好相反,物件生命週期結束時呼叫;
function __destruct( $name, $age )
{
echo $this->name;
echo $this->age;
}
10)類的繼承
PHP 使用關鍵字 extends 來繼承一個類,PHP 不支援多繼承。
class ChildClass extends ParentClass {
// 程式碼部分
}
11)訪問控制
–public(公共成員)
可以公開的、沒有必要隱藏的資料資訊。可以在程式中的任何位置(類內、類外)被其他的類和物件呼叫。子類可以繼承和使用父類中所有的公共成員;
–private(私有成員)
被private關鍵字修飾的變數和方法,只能在所屬類的內部被呼叫和修改,不可以在類外被訪問。在子類中也不可以;
–protected(保護成員)
被protected修飾的類成員,可以在本類和子類中被呼叫,其他地方則不可以被呼叫;
12)static: 宣告類屬性或方法為 static(靜態),可以不例項化類而直接訪問;
13)Final 關鍵字
a)如果父類中的方法被宣告為 final,則子類無法覆蓋該方法;
b)如果一個類被宣告為 final,則不能被繼承;
14)呼叫父類構造方法: parent::__construct();
15)自動載入類 __autoload()函式:
function __autoload($classname) {
require_once $classname . '.php';
}
// MyClass1類不存在時,自動呼叫__autoload()函式,傳入引數”MyClass1”
$obj = new MyClass1();
總結
php原生態的基礎程式設計知識學習到了這,下次介紹ci框架下的php程式設計,基於mvc程式設計模式,可以更加方便更加快速的開發程式碼。