PHP面試題

1. echo、print、print_r、var_dump

  • echo 可以輸出一個或多個字符 無返回值 是語言結(jié)構(gòu)
  • print 只能輸出單個字符 有返回值1 是語言結(jié)構(gòu)
  • print_r 打印關(guān)于變量的易于理解的信息 設(shè)置第二個參數(shù)true 則將輸出值返回。
  • var_dump 打印關(guān)于變量的易于理解的信息 輸出結(jié)果帶類型 主要用于調(diào)試

2.單引號和雙引號的區(qū)別

$a = 123;
echo '$a'."\n";  \\ "\n"是換行符
echo "$a";
輸出結(jié)果:
$a
123
  • 雙引號的內(nèi)容是經(jīng)過PHP的語法分析器解析過的,任何變量在雙引號中都會轉(zhuǎn)換為它的值進(jìn)行輸出顯示。
  • 單引號的內(nèi)容則是所見即所得,無論有無變量,都會當(dāng)作普通字符串輸出。

3.isset 和 empty的區(qū)別

  • isset函數(shù)是判斷變量是否被定義且為非空 返回值為true
$a = null;
var_dump(isset($a));
var_dump(isset($b));
輸出結(jié)果:
bool(false)
bool(false)

empty函數(shù)判斷一個變量是否為空 為空則返回true;

  • "" (空字符串)
  • 0 (作為整數(shù)的0)
  • 0.0 (作為浮點(diǎn)數(shù)的0)
  • "0" (作為字符串的0)
  • NULL
  • FALSE
  • array() (一個空數(shù)組)
  • $var; (一個聲明了,但是沒有值的變量)

4.面向?qū)ο笙嚓P(guān)知識點(diǎn)

$this

指向的是實際調(diào)用時的對象。在定義類時,無法得知對象的名稱叫什么,要想調(diào)用類中的方法,就要使用偽變量$this,只可以在類的內(nèi)部使用。

構(gòu)造函數(shù)和析構(gòu)函數(shù)

具有構(gòu)造函數(shù)的類會在每次創(chuàng)建新對象時先調(diào)用此方法,所以非常適合在使用對象之前做一些初始化工作

class SportObject{
    public $name;
    public $age;
    public $height;

    public function  __construct($name,$age,$height)
    {
        $this->name = $name;
        $this->age = $age;
        $this->height = $height;
    }

    public function PlayBasket(){
        if ($this->age<25 && $this->height<185){
            return $this->name."符合打籃球標(biāo)準(zhǔn)";
        }else{
            return $this->name."不符合打籃球標(biāo)準(zhǔn)";
        }
    }
}

$sport = new SportObject("jack",'22','184');
echo $sport->PlayBasket();

析構(gòu)函數(shù)會在到某個對象的所有引用都被刪除或者當(dāng)對象被顯式銷毀時執(zhí)行
PHP內(nèi)置的垃圾回收機(jī)制,自動清除不再使用的對象,釋放內(nèi)存。
類似于unset();

類常量

class BookObject{
    const BOOK_TYPE = "PHP";
}
echo BookObject::BOOK_TYPE;

常量不需要實例化對象 直接通過類名::常量名調(diào)用即可;

parent 和self

parent:可以調(diào)用父類的方法,成員變量和常量。
self :用于訪問類的靜態(tài)屬性,靜態(tài)方法和常量;

class BookObject{
    const BOOK_TYPE = "PHP";
}

class book extends BookObject{
    const BOOK= "Laravel";
    function __construct()
    {
        echo parent::BOOK_TYPE."\n";
        echo self::BOOK;
    }
}
$obj = new book();

static

static 可以用于靜態(tài)或非靜態(tài)方法中,也可以訪問類的靜態(tài)屬性、靜態(tài)方法、常量和非靜態(tài)方法,但不能訪問非靜態(tài)屬性

public、private、protected、final的區(qū)別

public(公共成員)

可以在程序的任意位置被其他的類和對象調(diào)用,子類可以繼承父類所有的公共成員。

private(私有成員)

只能在類的內(nèi)部被調(diào)用和修改,不可以在子類被調(diào)用;

protected(保護(hù)成員)

可以在本類和子類中調(diào)用,其余地方不可以被調(diào)用;

final關(guān)鍵字

修飾類
表示該類不能被繼承也不能;
修飾方法
表示該方法無法被被子類覆蓋。

類的靜態(tài)調(diào)用和實例化調(diào)用

1. 內(nèi)存空間

靜態(tài)方法在內(nèi)存中只存在一份,直接調(diào)用靜態(tài)方法速度要快一些。但靜態(tài)方法申明的過多,反而會影響系統(tǒng)性能。

實例化不一樣,每一個實例化是一個對象,在內(nèi)存中是多個的

2.不同點(diǎn)

靜態(tài)調(diào)用不需要實例化即可調(diào)用

靜態(tài)方法不能調(diào)用非靜態(tài)屬性,因為非靜態(tài)屬性需要實例化后,存放在對象里

靜態(tài)方法可以調(diào)用非靜態(tài)方法,使用 self 關(guān)鍵字。php 里,一個方法被 self:: 后,自動轉(zhuǎn)變?yōu)殪o態(tài)方法

調(diào)用類的靜態(tài)函數(shù)時不會自動調(diào)用類的構(gòu)造函數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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