天天看點

php stdClass類的用法

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) { ["id"]=> int(100) ["name"]=> string(6) "flypig" }

  是以在5以後,stdClass對象在任何地方被調用,都是引用位址型的,是以相對消耗的資源會少一點。在其它頁面為它指派時是直接修改,而不是引用一個拷貝

$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

=

new

stdClass();

  $a

->id =

'11 '

;

  $a

->username =

'me'

;

  print_r(

$a

);

多時候用這種方法取代數組的使用,隻不過是換一種文法形式

  $a

=

array

(1=>2,2=>3);

  $a

= (object)

$a

;

  $a

=

new

stdClass();

  $a

->id =

'11 '

;

  $a

->username =

'me'

;

print_r(

$a

);//輸出:stdClass Object ( [id] => 11 [username] => me )