Avatar billede danisher Nybegynder
20. december 2003 - 16:11 Der er 9 kommentarer og
1 løsning

Programmering i klasser

Hej alle

Jeg har nu kodet PHP i en del år, og har nu fået noget mere erfaring inden for objekt orienteret programmering, igennem Java, C# og C++.

Jeg vil derfor høre, om der er nogen, som har erfaringer med PHP og klasser, da jeg ikke mener der er nogle specielt gode tutorials derude.
Mit problem er ikke at oprette klassen osv, men jeg synes ikke jeg kan se sammenhængen i, at man har sin HTML, og så har man sine klasser ved siden af? For ens HTML kode, bliver vel alligevel fyldt med funktionskald igennem klasserne, eller er jeg helt galt på den?

Jeg kunne eventuelt godt tænke mig nogle eksempler.

Ready, set - Go! :)

På forhånd tak!

Mvh
Avatar billede thb Nybegynder
20. december 2003 - 16:26 #1
Jeg har kigget på nogle classes fra denne side.. :)

http://www.phpclasses.org/

Thomas
Avatar billede Slettet bruger
20. december 2003 - 18:46 #2
Selv foretrækker jeg at gemme html'en i variabler for skrive det ud til sidst... det giver generelt et bedre overblik over koden (min subjektive holdning)...
Se...
<?
include('main.php');
if($user->isLogged())
{
$content = 'text bal bla bla
dit brugernavn er '.$user->displayUsername().' ho ho';
}
else
{
$content = 'du er ikke logget ind...';
}
$template->displaySite($content);
Avatar billede danisher Nybegynder
21. december 2003 - 21:38 #3
Hej regin

Hvad indeholder main så? Indeholder den både "headeren" og "footeren" af siden, for det kan vel ikke lade sig gøre, da PHP jo samler alt indhold i rækkefølge, og så bagefter sender det hele til browseren?
Avatar billede Slettet bruger
21. december 2003 - 22:14 #4
det er netop det smarte i at køre udseendet i en template-klasse...

forestil dig f.eks.
$template->setRedTheme();//kører rødt tema på siden...
$template->displaySite($content);
elller
$template->setGreenTheme();//kører grønt tema på siden..
$template->displaySite($content);

displaySite($content) smider header og footer rundt om $content...

main.php indeholder klasser, configurationer, oprettelse af forbindelse til database mm.
Avatar billede danisher Nybegynder
22. december 2003 - 14:46 #5
Okay, så skærer vi det ud i pap...

Hvis nu jeg nu har en header og en footer fil, som skal inkluderes henholdsvis over og under mit indhold. Så har vi derinde, en god gang HTML:
<?
include ("header.php");
?>
                        <table cellpadding="2" cellspacing="0" width="100%">
                            <?
                            include ("admin/inc/connect.php");
                            $query = mysql_query("SELECT overskrift, link FROM forside_nyheder ORDER BY oprettet DESC LIMIT 4");
                            while ($row = mysql_fetch_array($query)) { ?>
                                <tr>
                                    <td>
                                        <? if ($row["link"]) { ?>
                                        <a href="<?=$row["link"]?>" target="_self"><?=stripslashes($row["overskrift"])?></a>
                                        <? } else { ?>
                                        <?=stripslashes($row["overskrift"])?>
                                        <? } ?>
                                    </td>
                                </tr>
                            <? } print mysql_error();?>
                        </table>
<?
include ("footer.php");
?>
Avatar billede danisher Nybegynder
22. december 2003 - 14:46 #6
Hvordan skal sådan noget så se ud?
Avatar billede Slettet bruger
22. december 2003 - 15:10 #7
Header og footer filer er noget "pjat" da det begrænser din brug af header(); sætning af cookies og sessions.
Men hvis du absolut vil være oldnordisk...

<?
include('main.php');//main indeholder blandt andet class nyhed()
include ("header.php");
?>
                        <table cellpadding="2" cellspacing="0" width="100%">
                            <?
                            include ("admin/inc/connect.php");
                            $query = mysql_query("SELECT overskrift, link FROM forside_nyheder ORDER BY oprettet DESC LIMIT 4");
                            while ($row = mysql_fetch_array($query)) {
$nyhed = new nyhed();
$nyhed->fraDatabaseRow($row);
echo '<tr>
<td>'.$nyhed->displayOverskrift().'</td>
</tr>'
} ?>
                                    </td>
                                </tr>
                            <? } print mysql_error();?>
                        </table>
<?
include ("footer.php");
?>

functionen displayOverskrift() finder selv ud af om der skal smides et link rundt om nyhedens overskrift
Avatar billede danisher Nybegynder
22. december 2003 - 15:18 #8
Okay, jamen så må du jo forklare mig noget bedre, hvordan jeg så lad vær' med at forblive oldnordisk...
Synes ikke jeg har kunne finde ud af dine eksempler indtil videre...
Avatar billede Slettet bruger
22. december 2003 - 16:15 #9
class template()
{
    var $theme = 'red';
function header()
{
    include($this->theme.'.header.php');
}

function footer()
{
    include($this->theme.'.footer.php');
}

function displaySite($content)
{
    $this->header();
    echo $content;
    $this->footer();
}

function setTheme($theme)
{
    switch($theme)
    {
        case 'green':
        $this->theme='green';
        break;
        case 'blue':
        $this->theme='blue';
        break;
        case 'red':
        default:
        $this->theme='red':
        break;
    }
}
}
Så er vi over header.php/footer.php problematikken...
plus lidt mere lir..
Avatar billede danisher Nybegynder
23. december 2003 - 15:31 #10
Jeg må hellere lukke
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