導航:首頁 > 安裝方法 > php魔術方法用在哪裡

php魔術方法用在哪裡

發布時間:2023-06-18 14:09:04

① 詳解php的魔術方法__get()和__set()使用介紹

先看看php官方文檔的解釋:
__set()
is
run
when
writing
data
to
inaccessible
properties.
__get()
is
utilized
for
reading
data
from
inaccessible
properties.
究竟用中文怎麼翻譯呢?
inaccessible
:n.
難達到;難接近;無法理解。
有代碼有真相:
復制代碼
代碼如下:
<?php
error_reporting(E_ALL);
class
stu{
private
$a;
private
$b
=
0;
public
$c;
public
$d
=
0;
//這里的
private
可以用
protected
public
替代
private
function
__get($name)
{
return
123;
}
//這里的
private
也可以用
protected
public
替代
private
function
__set($name,
$value)
{
echo
"This
is
set
function";
}
}
$s
=
new
stu();
var_mp($s->a);
//output:
123
var_mp($s->b);
//output:
123
var_mp($s->c);
//output:
null
var_mp($s->d);
//output:
0
var_mp($s->e);
//output:
123
$s->a
=
3;
//output:
This
is
set
function
$s->c
=
3;
//no
output
$s->f
=
3;
//output:
This
is
set
function
?>
結果分析:
如果沒有__get方法,執行
var_mp($s->a)
var_mp($s->b)
會有致命的錯誤
如果沒有__get方法,執行
var_mp($s->e)
會有一個notice,提示沒有定義屬性
$e
總結:
1.
從一個難以訪問的屬性讀取數據的時候
__get()
方法被調用
2.
向一個難以訪問的屬性賦值的時候
__set()
方法被調用
3.
難以訪問包括:(1)私有屬性,(2)沒有初始化的屬性
4.
__isset()
__unset()
也類似

② php魔術方法。。

在 PHP 里,將所有以 __(兩個下劃線)開頭的類方法保留為魔術方法,所以在定義類方法時,除了上述魔術方法,建議不要以 __ 為前綴。

魔術方法的引入是對面向對象編程思想的進一步實現,重載就是通過魔術方法來實現的。

PHP 魔術方法主要有:
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(),__sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等。

最常見的是__construct(), __destruct(),__get(), __set()等:

__construct和__destruct是類的構造函數和析構函數。

③ php魔術方法__tostring

__tostring()方法:在直接輸出對象引用的時候,就不會產生錯誤,而是自動調用了__tostring()方法,輸出__tostring()方法中返回的字元串

通俗來說就是 對象一般是使用print_r() 或 var_mp() 來列印訪問

但對於一般閑的人來說直接 使用 echo 輸出對象時,必定會報錯的,原因是對象無法使用echo的。

這個時候如果想解決這個錯誤,咱們應該怎麼操作呢?

可以很好的利用__tostring()這個魔術方法

但是切記使用__toString() 時返回值一定要使用return 來進行返回。

<?php
header("content-type:text/html;charset=utf-8");
class demo{
public $foo;
public function __construct($foo){
$this->foo=$foo;
}
//定義一個__toString()方法時,返加一個成員屬性$foo
public function __toString(){
return $this->foo;
}
}
$demo=new demo('hello PHP成員');
echo $demo;

④ PHP怎麼在子類用父類的魔術方法

父類的魔術方法:
function __construct()
{
echo '我是父類的構造函數(魔術方法)';

}

function __unset()
{
echo '我是父類的銷毀方法(魔術方法)';

}
子類調用
function index()
{
parent::__construct();

parent::__unset();

}
輸出:
我是父類的構造函數(魔術方法)
我是父類的銷毀方法(魔術方法)

閱讀全文

與php魔術方法用在哪裡相關的資料

熱點內容
哪裡普及急救知識方法 瀏覽:747
海桿漁輪的使用方法 瀏覽:673
求對稱軸的方法有哪些 瀏覽:807
腿彎疼痛檢查最佳的方法是什麼 瀏覽:696
紫蘇的食用方法 瀏覽:964
新冠病毒核酸檢測用什麼方法 瀏覽:752
用熱水洗衣服的正確方法技巧 瀏覽:852
監控頭連接方法 瀏覽:578
冬瓜如何腌制的方法 瀏覽:787
分線路由器安裝方法 瀏覽:950
行李箱縫制方法視頻 瀏覽:935
托福閱讀成績計算方法 瀏覽:50
養碳爐的使用方法 瀏覽:411
滅火方法對准哪裡 瀏覽:292
整治水污染的最佳方法 瀏覽:657
口腔口臭的治療方法 瀏覽:771
華為p30手機閃退解決方法 瀏覽:38
修羅技能使用方法 瀏覽:513
灌湯包汁方法怎麼做 瀏覽:142
橡皮樹的扦插方法視頻 瀏覽:372