• Medlem
  • Stockholm
  • 2004-07-31 10:03

Har redan diskuterat detta med några av er men är fortfarande frustrerad

Så, hur organiserar ni era filer för stora siter?

Jag skriver OOP-PHP tillsammans med (X)HTML och CSS.

Jag är ute efter att lära mig det ultimata sättet (säg att det finns!) så filerna ligger logiskt lokalt och länkarna online blir bra även dem.

Logiken
Hur ser era indexfiler ut?
Vissa skriver tydligen en massa inkluderingsrader i varje fil som hör till siten.

<?php
/* file: guestbook.php */
require_once('html/header.php');
require_once('html/navigation.php');
require_once('html/news.php');
/* sidans innehåll */
require_once('html/copyright.php');
require_once('html/footer.php');
?>

Personligen använder jag indexfilen som mall och inkluderar allt därifrån. På så vis krävs dessa require_once-rader endast en gång. Känns som vansinne att behöva klippa in raderna i vartenda dokument som ska användas på sidan.
+ indexfilen kräver inte alla inkluderingsrader i varje dokument
- innehållet som inkluderas hamnar mitt i index-filen och gör det krångligare att påverka flödet åvan (kräver buffering för att lösas)

Filstruktur
Hur organiserar ni era filer inför större projekt? Jag känner visserligen inte att det är riktigt relevant hur stort ett projekt är. Finner man en bra struktur så kan man lika bra använda den.

Jag är mest intresserad av er som försöker använda 3 skiktsarkitektur då det är vad jag gör.

Vi tar ett mycket trivialt exempel (sidan skall vara objektorienterad).
Jag ska göra en hemsida innehållandes en välkomsttext och en länk till en "Om oss" sida (mydomain.com/about/).
"Om oss"-sidan hämtar sin text från en databas och denna text ska även admins kunna ändra. Då är frågan... ska de ändra texten ifrån typ mydomain.com/admin/update_about/ eller mydomain.com/about/update/
Personligen tycker jag den andra känns bäst men det är bara för den ställer till mest problem för mig, visst är det lustigt hur man fungerar

Men framförallt, till själva filstrukturen.
I nuläget har jag ungefär så här

/lib/          den här mappen innehåller alla klasser
/styles/     den här mappen innehåller alla css-filer
/include/   den här mappen innehåller config.php
/about/     innehåller allt som aboutsidorna kan kräva för visning och uppdatering. består av 4 filer
                 AboutGUI.php
                 AboutAdminGUI.php
                 AboutController.php
                 About.php

För det första, min /include/ mapp känns ju rätt fånig. Förut innehöll den mina css-filer också men numer lägger jag dem i en egen mapp.

Men... särskilt i det här triviala exemplet. Känns inte som om klassen About är rätt värdelös? Vad ska den innehålla? en "var $text" och inget mer? AboutController innehåller metoder för att hantera Aboutklassen (hämta från DB ,spara till DB) och GUI-klassen tar hand om att skriva HTML-koden.

Känner nästan att jag tappar bort mig i min egna fråga... men hur som helst. Vad anser ni vara bästa sättet att strukturera upp filerna?

och hur löser ni inkluderingar m.m. ?
och hur löser ni adminsidan? Har ni en mapp /admin/ som innehåller alla filer som den ska använda sig utav?