Gå til innhold

Hvordan organiserer du koden?


Anbefalte innlegg

Hei!

 

Jeg lurer på hvordan folk her som har utvikla en slags eget "rammerverk" strukturer funksjoner og moduler?

Hvordan er alt kategorisert? Hvordan fungerer fila for å hente ut modulene eller delene av scripta dine?

Hvor legger du template filer? Database? Flatefiler? Bruker du PHP i dem? Bruker du eget templatesystem? Eller smarty? Det er jo så mye rart du kan gjøre!

Men hva er det mest optimale? Sett på forskjellige CMS ute... og jeg syntes det er ser veldig lite fleksibelt ut mye rart der. Wordpress er jo rene kaoset... joomla skjønte jeg ikke en gang! phpbb så lite gjennomtenkt ut og fleksbilt ut.

Eller er dette noe folk ikke ønsker å dele :p ?

 

Takk! :)

Lenke til kommentar
Videoannonse
Annonse

Jeg liker å gjøre mesteparten av jobben selv, så jeg bruker et rammeverk som jeg har kodet selv til prosjektene mine. Jeg bruker Smarty for templates (synes det er et glimrende templatesystem), og har en struktur på filer og mapper som kan se slik ut:

 

/global/
- /config/
- /smarty/
- /models/
- - /packages/
- - /packages.xml
- - - /[package]/
- - - /[package]/
/hosts
- /www.example.org/
- - /config/
- - - /index.xml
- - - /menu.xml
- - - /[etc.]
- - /app/
- - - /controllers/
- - - /views/
- - /public/
- - - /index.php
- - - /favicon.ico
- - - /[etc.]
- /static.example.org/
- - /public/
- - - /gfx/
- - - /lib/
- - - /[etc.]/

Lenke til kommentar
Deler du opp alle funksjonene dine? F. eks. string.functions.php ? Behandling av strenger og andre for validering? Eller sparer man kanskje mest på å ha alt i ett? Bruker kanskje mer ressurser på include så mye?

Jeg bruker ytterst få funksjoner (5-10), resten ligger i klasser. Så jeg har bare en functions.php-fil, resten er klasser som ligger i packages-folderen. I tillegg bør du se på __autoload() for å slippe å include flere filer enn nødvendig.

Lenke til kommentar

Jeg har laget et eget rammeverk.

 

 

app/
-- Bootstrap.php
-- Config.php
-- controllers/
---- admin/
------ Pages.php
---- Page.php
-- models/
---- Page.php
---- User.php
---- Auth.php
---- Cache.php
---- Plugin.php
-- views/
---- admin/
------ posts/
--------- index.phtml
--------- show.phtml
---- layouts/
-- i18n/
index.php
lib/
-- Flow.php
-- Flow/
---- Controller.php
---- Controller/
------ Dispatch.php
---- View.php
---- [alle andre rammeverkfiler]
tmp/
-- cache/

 

 

Alle requests blir mappa til index.php hvor dispatch-klassen tar hånd om requesten og finner riktig klasse, samt hvilken metode den skal utføre.

 

En typisk controller ser slik ut: (forumet fucker med identering)

 

 

<?php
class PagesController extends AdminController
{
protected $layout = null;

public function indexAction()
{
		return $this->render('pages/index');
}

public function showAction($id)
{
	return $this->render('pages/show', array(
		 'page' => Page::findOneById($id)
	));
}
}

 

 

Så hvis jeg går til siden /admin/posts/show/1, vil metoden showAction fra PagesController-klassen. som ligger i admin/-mappa bli utført med "1" som parameter som default.

 

I view-filene bruker jeg PHP med alternativ syntax

 

Filene loades automatisk ved hjelp av autoload (spl_autoload_register()).

Endret av Josh Homme
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...