2010-08-30 150 views
1

我有一個返回對象數組像這樣的功能:PHP對象的默認返回值

<?php 

function sth() 
{ 
    return (object) array(
    "obj1" => $obj1, 
    "obj2" => $obj2, 
    "obj3" => $obj3 
    ); 
} 

$obj = sth(); 
echo $obj; 

?> 

在這裏,我想定義$ OBJ的默認value.It將返回默認值,而不是OBJ1 $,obj2的$,$ OBJ 3。

如何定義默認值?

+4

您究竟在做什麼?你有沒有可以使用這個的真實代碼的例子? – BoltClock 2010-08-30 04:30:18

+0

Look.Now $ obj是一個對象數組。我想定義一個像$ obj這樣的默認值來調用。我不想碰任何數組對象。 當我寫$ obj時它會返回默認值,當我寫$ obj-> obj1時它會返回$ obj1。 – sundowatch 2010-08-30 04:35:14

+0

我不知道你在做什麼。請描述你想達到的目標。也許您應該創建某種集合(如[Java集合](http://www.google.com/search?client=opera&rls=zh-CN&q=java+collection&sourceid=opera&ie=utf-8&oe=utf-8))存儲其他對象並實現'__toString()'方法? – Crozin 2010-08-30 04:39:39

回答

5

您需要將實際功能添加到對象才能實現此目的。簡單地將數組轉換爲對象只會創建一個包含一些值的對象,與數組並沒有太大的區別。對於陣列或對象沒有「默認值」的概念,模擬這個概念的唯一方法是通過使用魔術方法實現它,在這種情況下爲__toString。因此,您需要創建類似於以下的類:

class ObjectWithDefaultValue { 
    public function __construct($params) { 
     // assign params to properties 
     ... 
    } 

    public function __toString() { 
     return $this->obj1; 
    } 
} 

function sth() { 
    $obj = new ObjectWithDefaultValue(array(
    "obj1" => $obj1, 
    "obj2" => $obj2, 
    "obj3" => $obj3 
    )); 

    return $obj; 
} 

$obj = sth(); 
echo $obj; 
+0

任何方法,而不是使用類? – sundowatch 2010-08-30 04:53:25

+0

@sundo如果你想以這種方式使用它,你需要以某種方式向對象添加一個'__toString'方法。一門課是唯一可行的方法。 – deceze 2010-08-30 04:55:46

+0

@sundowatch沒有一個類是唯一的方法,因爲它可以使用__toString()魔術方法。 – 2010-08-30 05:01:05

0

創建包含對象數組作爲屬性的類。並在__toString()方法返回任何你想要的。