OOP structuur

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Leander ---

Leander ---

06/03/2011 14:32:52
Quote Anchor link
Hallo,

Ik ben al een enige tijd bezig met het programmeren in PHP (procedureel). Echter wil ik nu verder en ben ik me gaan verdiepen in PHP OOP (met kennis van Java en Actionscript 3). OOP denken is dus niet zo'n heel groot probleem.

Wat wel mijn probleem is is hoe bouw ik uiteindelijk zo'n mappen structuur op.
Ik weet de richtlijnen van het maken van classe bestanden en dat die in de map classes moet komen.

Maar hoe koppel je die vervolgens aan elkaar? Ik heb nu verscheidene OOP Scripts bekeken, maar krijg nergens een duidelijke structuur in? Wat doet men met index.php bijvoorbeeld? Ik weet dat je ze moet includen voordat je ze kan gebruiken, maar hoe gaat dat in werking? Blijft het de bedoeling dat je procedureel en OOP door elkaar gaat gebruiken?

Moet je dus ongeveer zo gaan werken in je index.php bestand?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$guestbook
= new Guestbook('guestbook.txt');
$user = new User('xxxx', 'xxxx', 'xxxx');
$user->placeMessage($guestbook, 'xxxxx');


echo $guestbook->viewMessage();
?>


Hoe ziet men dat?
Gewijzigd op 06/03/2011 15:00:38 door Leander ---
 
PHP hulp

PHP hulp

23/11/2024 09:10:27
 
Pim -

Pim -

06/03/2011 16:41:23
Quote Anchor link
Je kan iets als dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$guestbook
= new Guestbook;
$user = User::loadFromId($id);
//of
$user = new User($name);

$message = new Message;
$message->setUser($user);
$message->setBody($body);

$guestbook->post($message);

foreach($guestbook->getMessages() as $message)
    echo $message->getUser()->getName().': '.$message->getBody()."\n";
?>

Dit vereist wel wat ingewikkelder code, omdat bij Guestbook#getMessage() ook de user moet worden geladen. Dit kan je handmatig doen, of je kan al het werk overlaten aan een ORM als Doctrine
Gewijzigd op 06/03/2011 16:42:12 door Pim -
 
Leander ---

Leander ---

06/03/2011 16:57:16
Quote Anchor link
Ja oke, maar het blijft dus wel dat je zulke code (soort van procedureel) blijft houden in je bestanden (wel met objecten) in combinatie met classes?
 
Pim -

Pim -

06/03/2011 18:48:31
Quote Anchor link
Kan, maar hoeft niet.
Als je een mvc framework gebruikt, zitten dit soort handelingen in actie-methodes in een controller-klasse.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
class GuestbookController extends Controller
{
    public function postAction($name, $body)
    {

        $guestbook = new Guestbook;
        $user = User::loadFromId($id);
        //of
        $user = new User($name);

        $message = new Message;
        $message->setUser($user);
        $message->setBody($body);

        $guestbook->post($message);

        // Stuur de berichten naar de template en render die
        return $this->render('guestbook', $guestbook->getMessages());
    }
}

?>

Het MVC framework zorgt er dan voor dat de juiste action wordt aangeroepen.
MVC tut
Symfony een van de beste frameworks, wel vrij complex
 
Leander ---

Leander ---

06/03/2011 18:54:47
Quote Anchor link
Oke bedankt! Ik weet genoeg voor nu.

Ik denk dat ik me ook maar eens moet verdiepen in die frameworks..
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.