php語言特性學習(二)

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

給程序員一個鼓勵唄!

**

  • 微信

微信

  1. 支付寶

 支付寶

相關文章
相關標籤/搜索