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

攔截器使用,攔截器檢查到私有字段,則不會(huì)報(bào)錯(cuò),如果沒有攔截器會(huì)直接報(bào)錯(cuò)。

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

    //當(dāng)類外對象調(diào)用私有字段時(shí),會(huì)去檢查是否有攔截器,如果有不會(huì)報(bào)錯(cuò),沒則報(bào)錯(cuò),__set和__get是攔截器。
    //直接對$_name進(jìn)行賦值,那么__set方法就會(huì)攔截住,就不會(huì)報(bào)錯(cuò)了。
    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以后不支持方法私有,這點(diǎn)要注意。

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

echo Computer::NAME;

常量使用有個(gè)概念需要知道,常量是運(yùn)行在數(shù)據(jù)區(qū)上的,跟變量和類運(yùn)行在堆棧內(nèi)存不一樣,數(shù)據(jù)區(qū)運(yùn)行數(shù)據(jù)往往是疊加的,而堆棧區(qū)運(yùn)行當(dāng)有多個(gè)對象,數(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++;
    }
}

//當(dāng)方法,成員字段都是靜態(tài)時(shí),不需要實(shí)例化就能直接調(diào)用
Computer::_run();
Computer::_run();
Computer::_run();
echo Computer::$_count;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容