Avatar billede 123maka Nybegynder
22. juni 2004 - 03:28 Der er 21 kommentarer og
4 løsninger

Opbygning af større sites og projekter i PHP

Hvad er optimalt mht. til strukturering af store projekter?

En side (index.php) med:
include('auth_sql.php'); //Mysql adgang
if($_GET["cmd"] == '') {
include('en_side.php');
}
elseif... osv. Eller en hel fil med det hele?

Eller hvad er optimalt? Står og skal til og igang med noget lidt størrere og vil gerne høre jeres erfaringer.
Avatar billede expnet Seniormester
22. juni 2004 - 03:31 #1
er ikke hele med havd du mener
Avatar billede 123maka Nybegynder
22. juni 2004 - 04:01 #2
Hvis du vil lave et stort site med en masse funktioner osv. Hvad er så den mest optimale måde at organisere det på?
Avatar billede expnet Seniormester
22. juni 2004 - 04:03 #3
vid. af en mysql vil jeg gøre
Avatar billede floetti Nybegynder
22. juni 2004 - 04:08 #4
hej...

Du kan bruge $_GET['cmd'] til at pege på en side som du lægger i en mappe f.eks. "sider". Så bruger du bare <? include("sider/$page.php");

Her laver du så bare linket til siden, som er: index.php?page=side

Er det en funktion som du kan bruge??

//Floetti.dk
Avatar billede 7th Praktikant
22. juni 2004 - 04:10 #5
Jeg ville opdele de forskellige funktioner i nogle classes, og så opbygge projektet omkring disse.

Personligt opererer jeg med fire classes til mine projekter.

En class til mysql connection.
En class til validering af forskellige brugerinput.
En class til forskellige funktioner såsom for eksempel en tagster.
En class til template, altså generering af hver enkelt side i dit projekt.
Avatar billede 123maka Nybegynder
22. juni 2004 - 04:10 #6
Det er ikke så meget det. Men hvordan jeg opbygger et stort site og stadig kan finde rundt i koden + at det skal være stabilt.
Avatar billede 123maka Nybegynder
22. juni 2004 - 04:11 #7
Og den seneste besked var så ment til floetti.

7th >
Så må jeg vel læse lidt om classer :).
Avatar billede floetti Nybegynder
22. juni 2004 - 04:18 #8
det jeg mente med at includere en side med hjælp av variablen page=side, så kan du lave alle funktionerene i filene for sig selv (hvori i mysql databasen er connected til index.php) - det ville være lidt næmmere at finde rundt i koderne...
Avatar billede 123maka Nybegynder
22. juni 2004 - 04:21 #9
7th >
Hvorfor ville du bruge en class til mysql?
Er det ikke smartere med en function?
Kan du finde nogle guides til classes?
Avatar billede expnet Seniormester
22. juni 2004 - 04:24 #10
Avatar billede 7th Praktikant
22. juni 2004 - 04:30 #11
Nu er jeg ikke den store PHP programmør, så indtil nu er det den bedste måde jeg kan lave tingene på :)

Hvorfor ville du bruge en class til mysql? fordi så får jeg opdelt og adskilt tingene.

Et meget hurtigt skitserende eksempel på en mysql connection class kunne se således ud...

class connection
{
    function my_connection()
    {
        $base = mysql_connect (host , user , pass);
        mysql_select_db (base , $base);
    }

    function base_query($sql)
    {
        return mysql_query($sql);
    }
   

    function count_query($sql)
    {
        return mysql_result($sql , 0);
    }
}
Avatar billede 123maka Nybegynder
22. juni 2004 - 05:27 #13
7th >
Okay, nu har jeg lidt at læse på :). Men hvordan skulle jeg bygge et helt site op? Det var faktisk også lidt det jeg tænkte på.
Avatar billede expnet Seniormester
22. juni 2004 - 05:32 #14
jamen det kommer jo ad på havd det er få en gruppe du vil have fat i og havd det er få noget stoft du vil give dine besøge
Avatar billede 123maka Nybegynder
22. juni 2004 - 05:59 #15
Føler mig lidt ikke forstået. Jeg har noget phpkode som jeg gerne vil printe ud til brugeren. Jeg har før lavet størrere systemer men jeg ender altid op med en 4000-5000 liniers index.php fil som jeg finder ret rodet. Er det smartere at dele det hele op i små filer og include dem når der er brug for dem og er det optimalt? Eller findes der et helt tredje svar?
Avatar billede expnet Seniormester
22. juni 2004 - 06:07 #16
jamen kan give dig eks på hvis du har en side med toplogo og text i midt i hver side er det og nemer ja venter side hvis der eks er noget er hedderr links alså en kasse med nogle links fra en tabel i din database så er det jo meget nemer at have en fil hvor den kode ligger også den f.eks nyeste_links.php og så include den i den tabel på siden du skal have det fra

alt dette var bare et Eks

//expnet
Avatar billede 7th Praktikant
22. juni 2004 - 07:42 #17
123maka > hurtige skitserende eksempel kan du jo genbruge til andre classes. Her er endnu et hurtigt skitserende eksempel, denne gang på en template class.

class template // generering af hver enkelt side
{
    var $sections , $variable;

    function header()
    {
        return '<span style="font-size: bold">".$this -> variable."</span>';
    }

    function content()
    {
        if (in_array ($this -> variable , $this -> sections))
        {
            include ($this -> variable.".php.tpl");
        }

            else
            {
                include ($this -> sections[0].".php.tpl");
            }
    }
}

- - - - - - - - - -

$temp = new template();
$temp -> sections = array ("velkomst" , "nyheder" , "weblog");

<table>
<tr>
<td><?php echo $temp -> header(); ?></td>
</tr>

<tr>
<td><?php echo $temp -> content(); ?></td>
</tr>
</table>

Igen vil jeg lige understrege, at dette er min foretrukne måde at gøre det på, da mine evner ikke rækker længere :)
Avatar billede Syska Mester
22. juni 2004 - 09:03 #18
Jeg kan godt se det problem som 123maka har, jeg synes også nogle gange at mine sider bliver uoverskuelige, og jeg heller ikke kan finde rundt i alle mine tables etc.....
så jeg må da lige være med på en lytter, skal nemlig snart til at lave nyt design til min side, og så er det jo rart med nye/gode ideer til opbygning.
Avatar billede avminarm Juniormester
22. juni 2004 - 09:04 #19
Der er mange muligheder, og man ender lidt op i noget med hvad "man er til".

7th ide er rigtig god, med classes kan man genbruge mange af koderne let, men man kan et langt stykken henad vejen også benytte funktioner som du selv foreslår. Classes består (groft set) af en masse funktioner der kan fungere sammen. Hvis man er nybegynder ville jeg foreslå at benytte funktioner og evt. bryde dem i små filer og include dem når der er behov.

jeg ville måske bruge switch f.eks:

switch($_GET['cmd']){
case 'forside':
  include "forside.php";
break;
case 'login':
  include "login.php";
break;
}

Dette kan man have i en tabel hvor man fast includer top/bund og lignende f.eks:

<table>
  <tr>
    <td><?php include "top.php"; ?></td>
  </tr>
  <tr>
    <td>
<?php
switch($_GET['cmd']){
case 'forside':
  include "forside.php";
break;
case 'login':
  include "login.php";
break;
}
?>
    </td>
  </tr>
  <tr>
    <td><?php include "bund.php"; ?></td>
  </tr>
</table>
Avatar billede swaxi Nybegynder
22. juni 2004 - 11:45 #20
løsningen med en switch, der inkluderer forskellige sider afhængigt af en variabel hedder også en frontcontroller. den er tæt relateret til model-view-controller arkitekturen.
det er muligt at jeg skyder lidt over målet, men hvis du virkeligt er interesseret i en god arkitektur, så er det gode emner at undersøge nærmere.
kig på :
http://www.phppatterns.com/index.php/article/articleview/81/1/1/
og
http://wact.sourceforge.net/index.php/ModelViewController

en mere operationel løsning er at vælge et eksisterende framework og bygge din applikation op om dette. jeg kan anbefale :
http://wact.sourceforge.net/
http://phrame.sourceforge.net/

se mere på :
http://wact.sourceforge.net/index.php/MvcFrameworksWrittenInPhp
Avatar billede 123maka Nybegynder
23. juni 2004 - 02:14 #21
swaxi, 7th, expnet og floetti vær søde og oprette svar :).
Avatar billede 7th Praktikant
23. juni 2004 - 17:22 #22
Svar :)
Avatar billede floetti Nybegynder
23. juni 2004 - 21:25 #23
tja... det var nu swaxi, 7th, expnet som gjorde det meste;)
Avatar billede expnet Seniormester
23. juni 2004 - 21:27 #24
jeg springer over :o)
Avatar billede swaxi Nybegynder
23. juni 2004 - 22:27 #25
hæp
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