Avatar billede webcreator Nybegynder
15. november 2005 - 12:26 Der er 16 kommentarer og
1 løsning

Well-designed PHP Applications

Hej eksperter.

Jeg søger materiale (gerne online, gratis) om, hvordan man designer og strukturerer PHP applikationer bedst muligt - specielt med henblik på Objekt Orienteret programmering og separering af layout fra det egentlige system.

Jeg skal til at bygge et nyt CMS, og en virksomhed har vist interesse for mit arbejde. Jeg ønsker derfor at lave systemet i henhold til eventuelle standarder.

Kender I til materiale der kunne være relevant? det være sig online materiale, tutorials, bøger osv.

Hvis det har nogen relevans, så har jeg i sinde at udvikle systemet i PHP5 og MySQL4.1.

Jeg er ikke interesseret i "kig på andre CMS-systemer"-svar. Jeg er interesseret i de korrekte måder at programmere på, og materiale hertil.

- På forhånd tak :)
Avatar billede webcreator Nybegynder
15. november 2005 - 12:27 #1
- Med henblik på at skille layout fra kerne-systemet, så ligger det selvfølgelig også op til, hvordan man skaber sider baseret på templates (hvis det da er den korrekte måde at gøre det på :)
Avatar billede phliplip Nybegynder
15. november 2005 - 13:38 #2
Med på en lytter
Avatar billede dustie Mester
15. november 2005 - 15:24 #3
Samme her. Det skader nok ikke at lære noget nyt ;)
Avatar billede wakko Nybegynder
15. november 2005 - 18:53 #4
Jeg ville lave en masse fuktioner, og så sørge for at samle alle mysql kald.
Derved får du en hurtig, og effektiv kerne, ved at have mindst muligt kode, og stadigvæk sørge for at det ikke bliver en alt for langsom kode.
Husk, det er altid vigtigt at lægge alle mysql kald i toppen, det hjælper MEGET!
Du kan godt spare et sek, og det er jo meget i dette sammenhæng :)
Avatar billede steven_ Nybegynder
15. november 2005 - 21:14 #5
wakko; kortere kode er bestemt ikke altid enstydigt med hurtigere generering af side :)

webcreator; jeg ville personligt nok køre alt i klasser, som for det meste returnerer true / false. desuden ville den smarteste måde at dele layout fra selve siderne nok være at oprette ialt to funktioner i en layout fil (top() & bund()), og så køre dette i hver enkel fil.

<?php
/* Include layout */
include_once $_SERVER['DOCUMENT_ROOT'] . "/layout.php";

top();

/* Content */
echo "Hello world!";

bund();
?>
Avatar billede steven_ Nybegynder
15. november 2005 - 21:16 #6
Desuden vil det være en del smartere at køre alle filerne vha. get-parametre. I korte træk:

<?php
/* Top design */
echo "<img src=\"/toplogo.jpg\" alt=\"\" />";

/* Include pages */
include($_GET['page'] . ".php");

/* Bund design */
echo "copyright 05'";
?>
Avatar billede wakko Nybegynder
15. november 2005 - 21:19 #7
Hvis du vil lave en header og en footer er det da nemmere at lave include

f.eks. <?PHP include 'footer.php'; ?>

Pas på med det der GET, hvad hvis der så er en eller anden idiot der skriver /?page=index ?

Og det med koden - nej, ikke nødvendigvis, men hvis man laver det ordentligt hjælper det altså
Avatar billede wakko Nybegynder
15. november 2005 - 21:21 #8
Hvis man skulle bruge GET skulle man gøre som jeg også selv har brugt, at man laver et directory til filerne, og inkluderer dem derfra:
<?PHP include("files/".$_GET['page'].".php"); ?>
Avatar billede steven_ Nybegynder
15. november 2005 - 22:10 #9
Det var blot for at vise ham det.

Der skal jo selvfølgelig meget validering på - heriblandt nedenstående.

if (preg_match("/(http:\/\/|^\/|\.+?\/)/", $_GET['page']))
{
    exit("I'll h4x yuo!!1");
}
Avatar billede arne_v Ekspert
16. november 2005 - 21:13 #10
Nu er jeg ikke PHP kyndig men de samme principper som gælder i andre sprog
gælder sikkert også for PHP.

- opdeling i lag (klassisk: præsentation, forretnings logik, data tilgang)
- OO A & D
- OOP implmentation (PHP classes)
- brug af design patterns
- skarp adskillelse af layout og kode (ideelt set har man kun filer med HTML tags
  og filer med kode, men ingen filer med begge - og selvom man ikke kan nå idealet,
  så kan man komme et langt stykke)
- al styre system og database specifik kode skal encapsulates så det er nemt
  at skifte

PEAR er så vidt jeg ved ikke lige populære i alle PHP kredse, men uden at
ligge hovedet på blokken for at de er en god implemtation, så har de forholdt
sig til mange vigtige problemer, så selvom du ikke vil bruge PEAR, så mener
jeg at du kan lære af at kigge på det
Avatar billede webcreator Nybegynder
19. november 2005 - 22:28 #11
Hej alle sammen.

Mange tak for jeres input. Det er imidlertid kun Arnes input jeg kan bruge. Det var helt specifikt svar omkring struktur og patterns jeg var interesseret i.

Jeg havde dog håbet på nogle links eller eksempler - for OO A og D samt OOP er jeg allerede bekendt med. Det er specielt med henblik på at adskille design og logik/model. Jeg har set eksempler på hvordan man kan bygge templates, hvori man fx skriver {menu}, og så indsættes menuen dér. Men der er sikkert en masse tanker omkring opbygningen af menuen - for den skal jo også kunne redigeres.
Avatar billede wakko Nybegynder
20. november 2005 - 12:15 #12
Jeg har selv nogle gange brugt det, altså at man lavede en ren HTML template, og så inkluderede de enkelte filer fra et særskilt directory ;)

<html>
<?PHP include 'filer/menu.php; ?>
<mere html>
<?PHP include $_GET['p']; ?>
</html>

Der skal selvfølgelig tilføjes en masse checks, der chekker om tingende er gyldige.
Du kan også lave en seperat fil, som du putter funktioner i, og sp inckludere "fuctions.php" el. lign. I starten.
Det er det jeg oftest bruger ;)

Nu da du skriver du bygger et CMS, kan du på den måde også med fordel sætte CMS'et til at redigere direkte i mappen "filer". Det har jeg gjort på det CMS jeg har lavet.

// Kristian Øllegaard
Avatar billede dustie Mester
20. november 2005 - 13:28 #13
Avatar billede arne_v Ekspert
20. november 2005 - 22:47 #14
interessant link

man kan læse det og nogle af den andre som der er linket til i bunden

og så kan man rulle lidt rundt på gulvet og skrige af grin

sjældent har jeg læst noget som bruger så mange buzzwords og med så
lav en procentdel af dem forstået rigtigt
Avatar billede arne_v Ekspert
20. november 2005 - 22:48 #15
det er ikke bevis for at template engine som smarty er gode, men det link
er ikke et troværdigt argument for at de er dårlige
Avatar billede arne_v Ekspert
31. december 2005 - 14:53 #16
Tid at få afsluttet her ?

og et svar fra mig
Avatar billede wakko Nybegynder
31. december 2005 - 14:58 #17
Lige en kommentar

De udvider PHP5, med alt der der mangler for at det er et ordentligt OO sprog.
Når PHP5 er stabilt, har de lovet en lille hjælpeguide til det.
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