php stdClass類的用法

2022-04-22 13:16:31 字數 2363 閱讀 1085

stdclass是php的乙個基類,所有的類幾乎都繼承這個類,所以任何時候任何地方都可以被new,可以讓這個變數成為乙個object。同時,這個基類又有乙個特殊的地方,就是沒有方法。

凡時用new stdclass()的變數,都不可能會出現$a->test()這種方式的使用

$user = new stdclass();

$user->id=100;

$user->name = 'gouki';

$myuser = $user;//在php4以前需要$myuser = & $user; 因為在那時賦值的時候相當於複製一遍而5以後就是引用的位址 

$myuser->name = 'flypig';//為它賦值時是直接修改在其它頁面也是一樣

var_dump($myuser);//object(stdclass)#1 (2)

所以在5以後,stdclass物件在任何地方被呼叫,都是引用位址型的,所以相對消耗的資源會少一點。在其它頁面為它賦值時是直接修改,而不是引用乙個拷貝

為什麼不用陣列呢?陣列在程式的使用中應該是最方便的,然而陣列的每次被引用($a = $b),其實都是建立了乙個副本,而且,陣列被unset後,還是占用了記憶體

1:可以取代陣列

$a=[0=>1,1=>2,2=>3];//這個例子這乙個是必須的這個陣列就算沒有值也要宣告乙個空陣列否則會報警告的錯誤!!

$a= (object)$a;//將陣列轉化成物件這時由於沒有class所以預設是stdclass的類的物件,任何用(object)強制轉換都會得到乙個stdclass的例項

$a->id ='11 ';//將值放進stdclass物件

$a->username ='me';

print_r($a);//stdclass object ( [0]=>1 [1] => 2 [2] => 3 [id] => 11 [username] => me )

從上例可以看出新建空對像卻要$andy = new andy; 而且還得先有個class andy{}即先得有個陣列或者空陣列並且還得將陣列轉化成物件比較麻煩

下面就是簡單的用法

$a=newstdclass();

$a->id ='11 ';

$a->username ='me';

print_r($a);

多時候用這種方法取代陣列的使用,只不過是換一種語法形式

用new例項化後,前面的陣列和內容清空,只留下後面新增進來的,如果不例項化,stdclass將保留所有元素。  

$a=array(1=>2,2=>3);

$a= (object)$a;

$a=newstdclass();

$a->id ='11 ';

$a->username ='me';

print_r($a);//輸出:stdclass object ( [id] => 11 [username] => me )

Delphi 類的類 class of 用法

這個概念本來在乙個關於delphi rtti 介紹的文件中已經說得很清楚了。但沒有任何關於實際使用的介紹,在我明白了這個概念和如何使用後決定寫乙個使用說明以方便大家使用。類的類在什麼時候使用 知道父類但需要建立具體的子類時 你不知道子類會是什麼 例如 關鍵 tcomponentclass class...

JFrame類的用法

1 jframe 建立乙個無標題的視窗。2 jframe string s 建立乙個標題為s的視窗。3 public void setbounds int a,intb,int width,int heigth 4 public void setsize int width,int heigth 5...

CMap類的用法

定義 cmapmymap 16 賦值 for int i 0 i 10 i mymap.setat i,cpoint i,i 賦完值後就變成如下這樣 索引 值 0 0,0 1 1,1 2 2,2 3 3,3 4 4,4 5 5,5 6 6,6 7 7,7 8 8,8 9 9,9 關鍵字為int型 比...