色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

PHP如何創(chuàng)建空對(duì)象

林玟書2年前150瀏覽0評(píng)論

PHP如何創(chuàng)建空對(duì)象?

引言

我們已經(jīng)習(xí)慣在框架里編寫類庫(kù)接口,使用面向?qū)ο蟮姆绞綐?gòu)建規(guī)模以上的應(yīng)用程序。但是還有很多機(jī)會(huì),時(shí)時(shí)刻刻與PHP數(shù)組打交道。

PHP版本迭代并加入的對(duì)象操作特性非常豐富。今天我們來(lái)說(shuō)一說(shuō)最基礎(chǔ)的PHP空對(duì)象,怎么使用,以及注意事項(xiàng)。

學(xué)習(xí)時(shí)間

如果是數(shù)組,我們可能這樣存儲(chǔ)數(shù)據(jù):

$aVal = array();

$aVal[key1][var1] = "something";

$aVal[key1][var2] = "something else";

那么有沒有辦法像下面這樣操作數(shù)據(jù)呢?

(object)$oVal = "";

$oVal->key1->var1 = "something";

$oVal->key1->var2 = "something else";

當(dāng)然了,這個(gè)是偽代碼。PHP中自帶了 stdClass 對(duì)象,聲明空對(duì)象使用下面的方法:

$x = new stdClass();

stdClass是默認(rèn)的PHP對(duì)象。stdClass沒有屬性,方法或父級(jí)。它不支持魔術(shù)方法,并且不實(shí)現(xiàn)任何接口。

當(dāng)將標(biāo)量或數(shù)組轉(zhuǎn)換為Object時(shí),將獲得stdClass的實(shí)例。只要需要通用對(duì)象實(shí)例,就可以使用stdClass。

創(chuàng)建 stdClass 的示例,可以使用下面的任意方式:

$x = new stdClass;

$y = (object) null; // 同上

$z = (object) 'a'; // 創(chuàng)建屬性 'scalar' = 'a'

$a = (object) array('property1' => 1, 'property2' => 'b');

你需要格外注意:

stdClass不是基類! PHP類不會(huì)自動(dòng)從任何類繼承。 所有類都是獨(dú)立的,除非它們顯式擴(kuò)展了另一個(gè)類。 在這方面,PHP與許多面向?qū)ο蟮恼Z(yǔ)言不同。

你無(wú)法在代碼中定義名為“ stdClass”的類。 該名稱已被系統(tǒng)使用。 你可以定義一個(gè)名為“Object”的類。也可以定義一個(gè)擴(kuò)展stdClass的類,但不會(huì)獲得任何好處,因?yàn)閟tdClass不執(zhí)行任何操作。

再舉一個(gè)例子:

class CTest { public $property1; } $t = new CTest; var_dump($t instanceof stdClass); // false var_dump(is_subclass_of($t, 'stdClass')); // false echo get_class($t) . "\n"; // 'CTest' echo get_parent_class($t) . "\n"; // false (no parent)

注意,PHP的類是獨(dú)立存在的,上面的 CTest 類也絕不是繼承自 stdClass 對(duì)象。

寫在最后

通過(guò)本文,你應(yīng)該收獲一個(gè)重要的概念,那就是,PHP 的類除非手動(dòng)嚴(yán)格指定繼承類,否則都是獨(dú)立存在的。

同時(shí),PHP 提供了標(biāo)準(zhǔn)的 stdClass 對(duì)象用于構(gòu)建空對(duì)象。操作數(shù)據(jù)時(shí)可以不用像數(shù)組那樣了。但是,拋開數(shù)組,你講很大程序上享受不到PHP帶來(lái)的數(shù)據(jù)操作便利。

Happy coding :_)

我是 @程序員小助手 ,持續(xù)分享編程知識(shí),歡迎關(guān)注。

php中->這個(gè)是什么,PHP如何創(chuàng)建空對(duì)象