Einzelnen Beitrag anzeigen
  #1  
Alt 09.08.2009, 13:19:39
GrayFox GrayFox ist offline
Anfänger
 
Registriert seit: Aug 2009
Alter: 39
Beiträge: 11
[PHP5 /OOP] Auf Eigenschaften der Vaterklasse zugreifen?

Guten Tag :-)

Ich habe ein kleines(?) Problem mit der OOP in PHP. Es gibt eine listbox.php und eine test2.php.

Die listbox.php hat aktuell folgenden Inhalt:

PHP-Code:
class listbox
{
    public 
$items;
    public 
$items_collection// = array();
    
    
function __construct()
    {
        
$this->items = new list_item_f;
        
$this->items_collection = array();
    }
    
    public function 
items($index)
    {
        return 
$this->items_collection[$index];
    }
    
    function 
addItemInternal($value)
    {
        
        
$this->items_collection[] = new list_item;    
        
$index count($this->items_collection) - 1;
        echo 
$index."<br>";
        
$this->items_collection[$index]->value $value;
    }
}

class 
list_item extends listbox
{
    public 
$value;
    
    
//JS Events
    
public $events = array();
    
    
//CSS Property
    
public $css = array();
    
    function 
__construct()
    {

    }
    
    private function 
add_css($prop$value$browser 0)
    {
        
$this->ccs[$prob][$browser] = $value;
    }
    
    public function 
add_event($event$value$browser 0)
    {
        
//echo $browser;
        
$this->events[$event][$browser] = $value;
    }
    
}

class 
list_item_f extends listbox
{

    function 
__construct()
    {

    }
    
    public function 
add($value)
    {
        
parent::addItemInternal($value);
    }
    
    public function 
addEvent($key$event$value$browser "both")
    {
        
$this->key($key)->events[$event][$browser] = $value;
    }} 
Die test2.php hat aktuell folgenden Inhalt:

PHP-Code:
include('listbox.php');

$list = new listbox;
$list->items->add("1.Item");
$list->items->add("2.Item");
$list->items->add("3.Item");
echo 
"<br>";
$list->addItemInternal("Item.1");
$list->addItemInternal("Item.2");
$list->addItemInternal("Item.3");
echo 
$list->items(0)->value."<br>";
echo 
$list->items(1)->value."<br>";
echo 
$list->items(2)->value."<br>"
Wenn ich test2.php aufrufe, erscheint folgende Ausgabe:

Code:
0
1
2

0
1
2
Item.1
Item.2
Item.3
Wie man sieht wird über parent::addItemInternal($value); die Methode "addItemInternal" der Vaterklasse aufgerufen, aber erst, wenn ich $list->addItemInternal(VALUE) direkt aufrufe, wird die Eigenschaft 'items_collection' erweitert.

Hat jemand eine Idee wo mein Fehler liegt?

--------------------------------------------------
Der Sinn des Ganzen ist, dass ich in PHP einige Steuerlemente, die in der Entwicklung von Desktopanwendungen genutzt werden, nachbauen und als vorgefertigte Klassen zur Verfügung stellen möchte. DataGrid, ListView, ListBox und TreeView seien mal als Beispiel genannt.
Dies soll die Entwicklung von Rich Internet Applications unterstützen. Der Syntax soll dabei an den von .NET angelehnt sein.

Ein Beispiel sähe so aus:
PHP-Code:
$list->items->add("1.Item");

echo 
$list->items(0)->value

$list->items->remove(0);

//ect.. 
Mit Zitat antworten