2015-02-11 92 views
2

Retrive PHP對象我有寫代碼,以創建用PHP對象,它是一個選擇:從選擇元件

<?php 

class Modulo { 

    var $nD; 
    var $nC; 
    var $nA; 

    function __construct($nD,$nC,$nA) { 
     $this->nD=$nD; 
     $this->nC=$nC; 
     $this->nA=$nA; 
    } 
    function toString(){ 
     return $this->nD."-".$this->nC."-".$this->nA."<br>"; 
    } 
} 

>

這裏是建立所述選擇的方法:

function loadModuleValid(){ 
    $mod1 = new Modulo(4,3,3); 
    $mod2 = new Modulo(5,3,2); 
    $mod3 = new Modulo(4,4,2); 
    $mod4 = new Modulo(5,4,1); 
    $mod5 = new Modulo(4,5,1); 
    $mod6 = new Modulo(3,5,2); 
    $mod7 = new Modulo(3,4,3); 
    $mods = array($mod1,$mod2,$mod3,$mod4,$mod5,$mod6,$mod7); 
    $i = 0; 
    print "<h3>Seleziona il modulo</h3>"; 
    print "<select id=\"d1\">"; 
    foreach ($mods as $key) { 

        print "<option value=\"{$i}\">{$key->toString()}</option>"; 
       $i++; 
    } 
    print "</select>"; 

} 

現在我必須在用戶按下按鈕時檢索用戶選擇的對象。我能怎麼做 ?我希望實際的物體不只是它的價值!

+1

您無法通過表單傳遞對象。 – Styphon 2015-02-11 13:42:27

+0

你不能用你的標識符對象 – pietro 2015-02-11 13:44:02

+1

你可以序列化它我猜,並檢索它後面的行,在後。不完全確定你想要達到的目標。 – 2015-02-11 13:44:09

回答

1

你不能通過一個窗體傳遞一個對象...以及如果你要序列化它,傳遞字符串,然後反序列化它,但你不想這樣做。

你想要做什麼是引用對象的標識符:

function loadModuleValid(){ 
    array(
     'mod1' => new Modulo(4,3,3), 
     'mod2' => new Modulo(5,3,2), 
     // your other objects 
    ) 

    $i = 0; 
    print "<h3>Seleziona il modulo</h3>"; 
    print "<select id=\"d1\">"; 
    foreach ($mods as $key => $object) { 

        print "<option value=\"{$key}\">{$object->toString()}</option>"; 
       $i++; 
    } 
    print "</select>"; 

} 

然後在後臺,你會獲取基於mod1或任何陣列關鍵是對象。然而,這需要在可以再次獲取它們的地方創建這個對象數組。

所以讓我們做這樣一個例子:

function getModulos($id = null) { 
    $mods = array(
     'mod1' => new Modulo(4,3,3), 
     'mod2' => new Modulo(5,3,2), 
     // your other objects 
    ); 

    if (null !== $id) { 
     return isset($mods[$id]) ? $mods[$id] : false; 
    } else { 
     return $mods; 
    } 
} 


function loadModuleValid(){ 
    $mods = getModulos(); 

    $i = 0; 
    print "<h3>Seleziona il modulo</h3>"; 
    print "<select id=\"d1\" name=\"modulo\">"; 
    foreach ($mods as $key => $object) { 

        print "<option value=\"{$key}\">{$object->toString()}</option>"; 
       $i++; 
    } 
    print "</select>"; 

} 

// this would be an example of your form handling 

if (isset($_POST['modulo'])) { 
    $modulo = getModulos($_POST['modulo']); 
} 
0

有一個黑暗的小技巧,就能序列化你的對象:

print "<option value=\"" . serialize($key) . "\">{$key->toString()}</option>"; 

然後反序列化它來檢索您的對象:

$mod = unserialize($_POST['yourSelectName']);