1. 程式人生 > >PHP OOP的特性-封裝

PHP OOP的特性-封裝

OOP 封裝

1、什麽是封裝?

隱藏對象字段和實現細節,僅通過對外接口,控制在程序中字段的讀取和訪問級別
,將抽象的行為和數據相結合,形成一個有機的整體。

2、字段的作用域

<?php
classs Conputer{
//public  公共的,內外可以訪問
//private 私有的,類內可以訪問
//protected  受保護的,類內和子類可以訪問
//類內指的是{}之間的部分
}
?>

3、instanceof關鍵字

確定一個對象是否是一個類的實例,一個類的子類的實例,或者實現了一個接口

4、攔截器

可以做成私有的,也可以設置靜態方法,和普通字段設置一樣,

5、常量;

<?php
class Computer{
const PI=3.14;
}
?>

6、靜態字段和方法

1、總結:靜態方法只能訪問靜態的,或者常量,用self關鍵字;

<?php
//類名一般第一個字母大小
class Computer{

    const PI=3.1415926;//常量,在該類所有的實例化對象的生命周期內,值不變,約定俗成 常量名稱大寫

    public static $_count=0;  //靜態類字段

    private $_name=‘聯想‘; //我是公共字段,內外可以訪問,初始化不可以賦值變量,如 $_name=time();錯誤

    private $_cpu; //我是私有字段,類內可以訪問

    protected $_zb; //我是受保護的字段,子類和類內可以訪問

    public function _run(){
        //類內訪問字段:  $this->字段名稱
       $this->_cpu=‘I5‘;
    }

    //靜態方法可以通過類—>方法名稱訪問,也可以通過 類名稱::方法名稱訪問
    //靜態方法,不可以訪問非靜態字段,非靜態方法,通過$this也無法訪問,因為不在對象中
    //靜態方法,可以訪問靜態字段,靜態方法,
    //靜態方法內部,不可使用$this關鍵字
    //靜態只能訪問靜態 ,或者常量,
    public static function _run2(){
       echo self::$_count;
       //self::_run(); 錯誤
       //self::_name; 錯誤
       self::PI;
    }

    //普通方法可以訪問靜態方法,因為,靜態方法是為了對所有實例共享的
    public function _run3(){
        self::_run2();
    }

    //攔截器
    //變量有用
    private function __set($varname,$varvalue){
        $this->$varname=$varvalue;
    }

    private function __get($varname){
        return $this->$varname;
    }
}

//實例化一個類
$computer=new Computer();
$computer1=new Computer();
Computer::_run2();
echo ‘<br>‘;
$computer->_run2();
echo ‘<br>‘;
//訪問常量
echo Computer::PI;
echo ‘<br>‘;
//echo Computer::$_count;
//echo $computer->_count;  無法訪問
//echo $computer->PI;   無法訪問

//攔截器 設置變量值
$computer->_name="dell";
echo ‘<br>‘;
echo $computer->_name;
echo ‘<br>‘;
$computer->_count="dell";
echo ‘<br>‘;
echo $computer->_count;
echo ‘<br>‘;
echo Computer::$_count;

//instanceof 關鍵字 確定某個對象是否是一個類的實例。一個類的子類,或者是實現了某個接口,

echo ($computer instanceof Computer);
?>

技術分享圖片

PHP OOP的特性-封裝