Avatar billede eflow Nybegynder
05. februar 2003 - 17:02 Der er 9 kommentarer og
1 løsning

OOP (omkring class extends)

Hejsa :)

Jeg har lavet et lille cms system, det er lavet i en class så det er lettest at genbruge og rette senere, men nok om det.
Jeg includer min class i min fil og laver et objekt af den i en session.

Jeg vil gerne have core systemet i en fil og resten, nyheds system mv. i en anden som jeg så også includer. Det ville jeg lave via class extend, men hvis jeg laver "News" extende "Cms" så skal jeg jo lave et nyt objekt af "News", og ikke "Cms", som jeg gerne ville, da det ville gør min kode meget lettere at vedligeholde.

Er der nogen der har nogen forslag til hvordan det kunne løses?
Avatar billede _darkstar_ Nybegynder
05. februar 2003 - 17:51 #1
Det lyder som om at du ikke er helt stiv i hvad objektorienteret programmering er.

Se

http://www.accu.org/acornsig/public/articles/ood_intro.html
Avatar billede swaxi Nybegynder
05. februar 2003 - 18:15 #2
ja ... dit sprøgsmål giver faktisk ikke rigtigt mening. enten er det fordi du ikke ved hvad du spørger om, eller også formulerer du dig ikke klart. hvis det er det sidste, så prøv igen :)
Avatar billede eflow Nybegynder
05. februar 2003 - 18:24 #3
Da jeg nok ikke ved til fulde hvad oop helt går ud på, eller ihvertfald ikke er sikker på det vil jeg lige læse det doc der, og komme tilbage of omformulere mig :)
Avatar billede eflow Nybegynder
05. februar 2003 - 19:01 #4
Vidste mer eller mindre alt hvad der blev beskrevet i det doc....Men kan være jeg ikke har designet min kode ordenligt, det er så en helt anden side af sagen :)

Det er lidt svært at forklare via kode, men forestil jer at jeg har cms.class.php hvor der ligger nogle funktioner der får det hele til at køre rundt, den bliver så includet i toppen af index.php, i index.php starter jeg så min cms class op i en session, vha.
$_SESSION['Cms'] = new Cms;

Men jeg vil så have nogle moduler, f.eks. nyheder el. login, dem vil jeg ligge i andre filer, men stadig køre det sammen til en stor class, så jeg kan referrer til nogle af funktionerne fra cms.class.php i f.eks. news.class.php

Håber i forstår det lidt bedre nu :) og hvis selve min opbygning er helt hen i vejret, hvilket jeg selfølgeligt ikke selv syntes, så må i meget gerne give råd :)
Avatar billede miraculix Nybegynder
05. februar 2003 - 20:53 #5
Hvorfor vil du gemme hele dit cms i en sessionsvariabel?
Avatar billede _darkstar_ Nybegynder
05. februar 2003 - 20:55 #6
Måske at du skal bruge nogle klasser som *ikke* nedarver fra din eksisterende klasse.
Avatar billede eflow Nybegynder
05. februar 2003 - 22:22 #7
miraculix, fordi jeg har nogle config osv, der skal gå rundt på alle sider, configs der kun ændrer sig engang imellem, sprog osv. derfor indlæser jeg det kun 1 gang pr. session, så slipper den for at bruge unødige kræfter + at det er smart når jeg får bygget en webshop ind i det, da indkøbskurven kan gemmes i et array i sessionen.

darkstar, hvad mener du præcist med at de ikke nedarver fra min eksiterende klasse?
Avatar billede eflow Nybegynder
05. februar 2003 - 22:23 #8
sorry, kom til at trykke udfør inden jeg fik skrevet færdigt, faktisk skulle det til darkstar nok rettes lidt:

Hvad mener du med at jeg skulle bruge klasser der ikke nedarver fra din eksisterende klasse?
Avatar billede _darkstar_ Nybegynder
05. februar 2003 - 23:11 #9
Lad mig tage tingene i den rækkefølge, som de står ovenfor...

Du har svaret til Miraculix at du har nogle konfigurationsvariable, som skal følge med rundt. Den slags er det en god idé at anbringe i en separat klasse. Hvis du vil lave et helt CMS og kun bruger een klasse, så bruger du slet ikke OO-tankegang endnu. Du får brug for *mange* klasser.

Hvad angår det med at arve - hvis du har alle dine konfigurationsvariable i een klasse, er det mest oplagt kun at have een instans af den klasse for hver brugersession. Så giver det ikke meget mening at lade en anden klasse arve (extende) den klasse, da den så også vil have faciliteter til at opbevare konfigurationsdata. Det er noget skidt.

Derfor: lav flere, uafhængige klasser og nogle stykker som måske er i familie - så at sige.

Jeg tror at det ville være en god idé hvis du læste lidt mere om OO. Der er masser af gode bøger om emnet. Køb en elelr tag på biblioteket og lån en der. Du kan ikke lære principperne om OOP alene ved at spørge her på Eksperten. Det kræver noget (men ikke meget) teori.
Avatar billede eflow Nybegynder
06. februar 2003 - 14:00 #10
Ahh, tak, nu ved jeg lige præcist hvordan det skal laves :)
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