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ù)