1.變量的管理php
1.isset用來判斷某個變量是否已經被php聲明,返回一個布爾值,若是變量被定義,返回true 不然返回false 當變量被定義成null也返回false。一樣能夠檢查某個數組中元素是否被設置。能夠接受任意數量參數 isset($val1,$val2 ...) 可是隻有所有被設置了才返回true 2.unset 取消定義以前的變量 若是沒有其餘變量引用的話會釋放這個變量的內存空間。用inset檢測unset的值返回false 3.empty 檢測一個變量是否被聲明或者是否爲false
超全局變量 $_GET:一個包含全部php從客戶瀏覽器收到的get變量 $_POST:一個包含全部php從客戶瀏覽器收到的post變量 $_COOKIE:一個包含全部php從客戶瀏覽器收的cookie的數組 $_ENV:一個包含環境變量的數組 $_SERVER:一個存放web環境變量的數組
2.轉義程序員
雙引號變量回解析,單引號不會解析。雙引號裏面能夠有轉義,單引號不行
3.多態web
class Cat { function miau() { print("miau"); } } class Dog { function wuff() { print("wuff"); } } function printResult($obj) { if($obj instanceof Cat) { $obj->miau(); } else if($obj instanceof Dog) { $obj->wuff(); }else { print("error:wrong object"); } } echo printResult(new Dog()); echo "<br>"; echo printResult(new Cat()); //下面是結果 wuff miau
能夠看出本例子不能夠擴展,若是再加一個動物則必須改源碼 因此用下面方法替換
創建一個父類,創建cry方法。再分別創建兩個子類cat dog類而且也創建cry方法(對父類方法重寫),再用一個實例函數判斷對象,分流。這就保證方法的擴展性。加一個子類繼承父類便可。而沒必要改源碼數組
//定義一個父類 class Father { function cry($arg) { print($arg); } } class Cat extends Father{ function cry() { print("Cat"); } } class Dog extends Father{ function cry() { print("Dog"); } } function printResult($obj) { if($obj instanceof Cat) { $obj->cry(); } else if($obj instanceof Dog) { $obj->cry(); }else { print("error:wrong object"); } } echo printResult(new Dog()); echo "<br>"; echo printResult(new Cat());
4.父類,子類中的parent:: self::瀏覽器
self:: 調用當前類的方法,屬性 parent::調用父類的方法和屬性 //父類 class Father { const name = 'father'; public function __construct() { print(self::name); } } //子類 class child extends Father { const name = 'child'; public function __construct() { parent::__construct(); echo '<br>'; print(self::name); } } $child = new child();
5.instanceof 操做符 判斷類的邏輯二元運算符微信
class Father { public $name = __CLASS__; } class Child extends Father { public $name = __CLASS__; } class test { public $name = __CLASS__; } function judge($obj) { if(!($obj instanceof Father)) { print($obj->name); print(' is a father'); } } judge(new Child()); judge(new test());
6.toString方法(裏面是return的值)cookie
class Person { private $name; function __construct($name) { $this->name = $name ; } function __toString() { return $this->name;//必定要return值 調用類的時候後返回 } } $obj = new Person('mmy family'); print($obj);
7.try catch exception 必須繼承exception 類函數
class NullHandleException extends Exception { function __construct($message) { parent::__construct($message); } } function printObj($obj) { if($obj == null) { throw new NullHandleException("print Object received null object"); } print($obj.'<br>'); } class MyName { private $name; function __construct($name) { $this->name = $name; } function __toString() { return $this->name; } } try { printObj(new MyName("boss")); printObj(NULL); printObj(new MyName("jone")); } catch(NullHandleException $e) { print $e->getMessage().'<br>'; print "in file " . $e->getFile().'<br>'; print "on line " . $e->getLine(); } //結果是 boss print Object received null object in file /mnt/hgfs/www/test/class.php on line 269
8.__autoload 自動載入post
MyClass.php class MyClass { function hello() { print "hello my friend "; } } general.inc function __autoload($class_name) { // echo$_SERVER["DOCUMENT_ROOT"]."/classes/".$class_name.".php"; require_once($_SERVER["DOCUMENT_ROOT"]."/classes/".$class_name.".php"); } main.php require_once('general.inc'); $class = new MyClass(); echo 'hello';exit; $class->hello(); //__autoload 主動調用class自動加載(載入)
**ui
**