PHP面向?qū)ο蠡A(chǔ)知識整理1

攔截器使用,攔截器檢查到私有字段,則不會報錯,如果沒有攔截器會直接報錯。

<?php
class Computer{
    private $_name;
    private $_model;
    private $_cpu;

    //當類外對象調(diào)用私有字段時,會去檢查是否有攔截器,如果有不會報錯,沒則報錯,__set和__get是攔截器。
    //直接對$_name進行賦值,那么__set方法就會攔截住,就不會報錯了。
    public function __set($_key, $_value)
    {
        //那么$key='_name',那么$value='聯(lián)想'
        //$this->_name = '聯(lián)想'
        $this -> $_key = $_value;
    }
    public function __get($_key)
    {
        return $this->$_key;
    }
}

$computer = new Computer();
$computer->_name='聯(lián)想';
$computer->_model='i7';
$computer->_cpu='四核';
echo $computer->_name;
echo $computer->_model;
echo $computer->_cpu;

PHP5.3以后不支持方法私有,這點要注意。

<?php
class Computer{
    const NAME = 'DELL';
}

echo Computer::NAME;

常量使用有個概念需要知道,常量是運行在數(shù)據(jù)區(qū)上的,跟變量和類運行在堆棧內(nèi)存不一樣,數(shù)據(jù)區(qū)運行數(shù)據(jù)往往是疊加的,而堆棧區(qū)運行當有多個對象,數(shù)據(jù)并不是疊加的。

<?php
class Computer{
    public $_count = 0;

    public function _add(){
        $this->_count++;
    }
}

$computer1 = new Computer();
$computer1->_add();
$computer1->_add();
$computer1->_add();
echo $computer1->_count;

$computer2 = new Computer();
$computer2->_add();
$computer2->_add();
$computer2->_add();
echo $computer2->_count;//最后輸出結(jié)果是3 3
<?php
class Computer{
    public static $_count = 0;

    public function _add(){
        //如果是靜態(tài)成員字段,要用self來調(diào)用,而不是$this
        self::$_count++;
    }
}

$computer1 = new Computer();
$computer1->_add();echo Computer::$_count;
$computer1->_add();echo Computer::$_count;
$computer1->_add();
echo Computer::$_count;

$computer2 = new Computer();
$computer2->_add();echo Computer::$_count;
$computer2->_add();echo Computer::$_count;
$computer2->_add();
echo Computer::$_count;

最后輸出結(jié)果是3,6 我特意每條打印發(fā)現(xiàn)是123456,證明是疊加上去的,以下例子除了成員字段靜態(tài)化,連方法也靜態(tài)化也是一樣的。

<?php
class Computer{
    public static $_count = 0;

    public static function _run(){
        self::$_count++;
    }
}

//當方法,成員字段都是靜態(tài)時,不需要實例化就能直接調(diào)用
Computer::_run();
Computer::_run();
Computer::_run();
echo Computer::$_count;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,374評論 11 349
  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,691評論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,778評論 18 399
  • 如今的互聯(lián)網(wǎng)時代,手機已經(jīng)成為身體的一部分了,用手機來看新聞、閱讀、娛樂等等。記得知識管理專家蕭秋水說過,對于手機...
    濤tao不絕閱讀 23,484評論 3 24
  • 發(fā)不出去
    麥歌芬閱讀 205評論 0 0