[OOP] Beliebige Type Casts

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • BugBite
    antwortet
    kommt mir bekannt vor xD
    klappt nur leider nich weil anscheinend wieder impliziert auf row konvertiert =(

    PHP-Code:
    public function addRow(RowData $r=null){
            if(
    $r==null){
                
    $this->addRow(new Row($this->getColumns()->getCount()));
            } elseif(
    $r instanceof RowData){
                if(
    $r->getCount()==$this->getColumns()->getCount()){
                    
    $this->_rows[]=$r;
                } else {
                    throw new 
    Exception("Row doesn't fit in table");
                }
            } else {
                throw new 
    Exception("Invalid type of parameter");
            }
            
        } 

    Einen Kommentar schreiben:


  • combie
    antwortet
    PHP-Code:
     class bla
    {
      public function 
    getRow(RowData $var)
      {
         
    // tuwas mit $var
      
    }

    Nur so kannst du in PHP Datentypen erzwingen..
    Alles andere ist "Handarbeit".
    Zuletzt geändert von combie; 10.10.2007, 22:56.

    Einen Kommentar schreiben:


  • BugBite
    hat ein Thema erstellt [OOP] Beliebige Type Casts.

    [OOP] Beliebige Type Casts

    Hallo Problemlöser und Neugierige,

    Ich arbeite momentan an meiner Klasse Table, die ne vorarbeit und Basisklasse für spätere Sachen darstellt.
    Um euch einen kleinen Überblick zu verschaffen, hab ich hier mal das Klassendiagramm:



    mit diesem Teil kann man momentan folgendes machen:
    PHP-Code:
    $head = new Row(2);
    $head->getCell(0)->set("Spalte1");
    $head->getCell(1)->set("Spalte2");
    $table = new Table(2,$head);
    $table->getRow(0)->getCell(0)->set("Inhalt1");
    $table->getRow(0)->getCell(1)->set("Inhalt12");
    $table->getRow(1)->getCell(0)->set("Inhalt21");
    $table->getRow(1)->getCell(1)->set("Inhalt22");
    echo 
    $table
    was dann folgendes ergebnis liefert:
    Spalte1|Spalte2|
    -
    Inhalt1|Inhalt12|
    Inhalt21|Inhalt22|

    soweit so gut, aber ihr hab euch bestimmt schon gefragt
    "warum macht der kerl da ein interface RowData rein??!!"

    aus einem ganz einfachen grund:
    so wies jetz aufgebaut ist könnte ich mir ja ganz einfach per
    getRow ne Row schnappen und die um eine zelle mit addCell
    erweitern.
    Das darf aber nich möglich sein, nur addColumn darf die Rows in
    der Table um eine Zelle erweitern.
    Darum wollte ich ja auch mit getRow ein Objekt des Typs RowData
    zurückgeben damit man später nur noch ein Zelle auslesen oder
    verändern kann.

    In c# oder java wär das ja kein problem weil ich da einfach RowData
    casten würde.
    Ich hab schon gegoogelt und im forum steht zu "cast" fragen nichts
    konkretes drinne =(
    Gibt es da irgendwas, was ich übersehn hab oder funktioniert das in
    PHP nur mit einem workaround??
Lädt...
X