Avatar billede Droa Seniormester
01. april 2011 - 21:28 Der er 2 kommentarer og
1 løsning

php classe soørgsmål Frameworkbuilding

Hej Eksperter.
Nu er jeg stadig en n00b til php.. også tænkte jeg lidt på og lave lidt sjov med programmet, for og lære 2 ting... PHP og OOP.
Jeg har tit siddet og leget med Framework før.. som  jeg har syntes var utroligt fascinerende, at man kan opbygge noget, på en lettere måde, end man før hen har kunne.

Derfor ville mit projekt være og se hvor langt jeg kan nå i og lave et HTML framework, til PHP.

Nu er det så at jeg sidder og har en masse ideer til det, men mangler ligesom og høre hvad man skal kunne forstå i OOP, før man begynder på sådan et projekt.. Nu vil jeg lige vise hvad jeg har lavet, for og høre hvordan man ellers skulle programmere det...
som sagt dette er et forsøg på og forstå OOP, og ikke et vidergående projekt, ud over hvad jeg kan nå på nogen måneder.


Er dette en korrekt måde og ved hænge objekter hinanden på..
som jeg viser i Førsøg 1. kan jeg jo lave en Div box i en div box, så mange gange jeg vil.. og med så mange elementer i samme level som jeg vil... men stadig.. noget smager forkert.

Mit må i lidt som i dengang Delphi Eksisterede, at man kunne udvikle Windows API i C/C++. Dette er bare HTML i PHP :)

håber jeg har forklaret mig selv godt nok.


XDiv Object (laver div boxe)

class XDiv
{
    private $attr = array();
    private $children = array();
   
    function XDiv($attr = array())
    {
        foreach($attr as $attname=>$attvalue)
        {
            $this->attr[$attname] = $attvalue;
        }
    }
   
    function AddChild($child)
    {
        $this->children[] = $child;
    }
   
    function toHTML()
    {
        $html = "".
        "<div";
        foreach($this->attr as $attname=>$attvalue)
                {
                    $html .= " ".$attname."=\"".$attvalue."\"";
                }
        $html .= ">";
            foreach($this->children as $child)
                {
                    $html .= $child->toHTML();
                }
        $html .= "</div>";
        return $html;
    }
}

XTest Object.. laver ren text

class XText
{
    private $text = "";
   
    function XText($string)
    {
        $this->text = $string;
    }
   
    function toHTML()
    {
        return $this->text;
    }
}


Forsøg 1: laver en div box, med texten Hallo World

$div = new XDiv(array(
"id"=>"Test",
"class"=>"Uhmm"
));
$div->AddChild(new XText("Hello World"));
echo $div->toHTML();
Avatar billede intenz Novice
02. april 2011 - 15:30 #1
Det er lidt svært at svare noget, når der ikke er et reelt spørgsmål :) Overordnet ser det fint ud. Den måde du har implementeret det minder om et composite pattern, hvilket er en udmærket måde at løse sådan et problem på.

Hvis du vil dybere ned, vil jeg anbefale dig at finde lidt litteratur. F.eks. kan "PHP Objects, patterns, and practice" anbefales (check amazon).
Avatar billede Droa Seniormester
02. april 2011 - 20:34 #2
dit svar er mere end jeg har forventet.. jeg fik en masse gode nøgleord jeg lige kunne jagte lidt på. jeg er da glad for det så pænt ud i dine øjne, siden i mine ser det meget ressourcetagende ud.

Jeg har opgraderet til php 5.3 og fik dermed namespaces.. som jo betydere jeg kan bygge mangle flere classer, uden og tanke på konflikter, men jeg vil lige kigge på den bog du anbefalede, jeg har dog lidt imod at læse om PHP, da sproget umiddelbart er meget dynamisk, og let og springer over i hvor gæret er lavest. hvor jeg så hellere ville læse om det i Java eller C, hvor man også lære om hvorfor man gør det på de måder man gør ting på.. men tak for rådet, og jeg vil se og få fat i bogen :)

ligger du et svar?
Avatar billede intenz Novice
03. april 2011 - 13:32 #3
Ja, det gør jeg da :)

Du har ret i, at PHP giver større mulighed for at 'springe over hvor gæret er lavest'. Men du kan sagtens lære OOP med PHP, lige så meget som du kan i Java, da principperne er universelle for alle OOP sprog.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester