Mappen-structuur OOP applicatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jasper DS

Jasper DS

10/01/2013 11:01:34
Quote Anchor link
Hoi,

ik heb al een aantal interessante topics gevonden over de mappen structuur in een (MVC) webapplicatie maar toch geraak ik er nog niet helemaal uit. Ook na het bekijken van de mappen structuur van o.a. Symfony zag ik het licht nog niet.

Laten we beginnen bij het begin, ik heb momenteel deze bestanden in deze structuur:
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
/lib
    /Jds
        /Article
            /Article.php (Domain-object)
            /ArticleMapper.php (Mapper)
        /Container
            /Container.php (de service container die ik gebruik)
            /Services.php (de configuratie van de app die alles in de container steekt)
        /Loader
            /AutoLoader.php
        /Store
            /Storage
                /DatabaseStorage.php
                /PDODatabaseStorage.php
                /SessionStorage.php
        /User
            /User.php (domain object)
            /UserMapper.php
/index.php                            


Ik denk dat bijvoorbeeld het mapje User en Article daar niet in horen want dat zijn specifieke objecten bij deze applictie en die horen niet in mijn lib.

Laten we de applicatie dan even uitbreiden om het een beetje realistischer te maken. Er zijn twee acties: login en register. Hiervoor maken we dus een controller en een view aan. Dan komt de lijst er ongeveer zo uit te zien denk ik.

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
22
23
24
25
26
27
/lib
    /Jds        
        /Container
            /Container.php (de service container die ik gebruik)
            /Services.php (de configuratie van de app die alles in de container steekt)
        /Loader
            /AutoLoader.php
        /Store
            /Storage
                /DatabaseStorage.php
                /PDODatabaseStorage.php
                /SessionStorage.php
/controller
    /login.php
    /register.php
/model
    /Article
        /Article.php (Domain-object)
        /ArticleMapper.php (Mapper)
    /User
            /User.php (domain object)
            /UserMapper.php    
/view
    /login.php
    /register.php

/index.php                            


Nu heb ik nog één twijfelgeval. Waar hoort services.php? Misschien toch in een config mapje? Tenslotte is dat een bestand dat ook voor elke applicatie anders is.

Wie brengt raad en tips?

Bedankt!

Jasper
Gewijzigd op 10/01/2013 11:01:51 door Jasper DS
 
PHP hulp

PHP hulp

03/12/2024 18:39:37
 
Flip --

Flip --

10/01/2013 18:17:27
 
Ozzie PHP

Ozzie PHP

10/01/2013 18:37:37
Quote Anchor link
Jasper, waarom jij ook niet je eigen framework schrijven ;-)))
 
Wouter J

Wouter J

10/01/2013 19:10:03
Quote Anchor link
Ozzie, omdat de meest tijd vergende actie is en ik raad het Jasper zeker niet aan.

services.php hoort inderdaad in een config mapje, samen met andere configuration files.
 
Jasper DS

Jasper DS

11/01/2013 10:31:54
Quote Anchor link
Flip -- op 10/01/2013 18:17:27:


Ik gebruik wel die autoloader en de structuur die daar aan de mappen gegeven word komt toch ongeveer overeen met die van mij niet?

@ozzie, dat lijkt me inderdaad een goede oefening.

@wouter, waarom zou jij me dat niet aanraden? Daar leer je toch juist erg veel van?

-------
Toch nog een kleine aanpassing, horen de model, controller en view niet in een mapje app?
Gewijzigd op 11/01/2013 10:35:08 door Jasper DS
 
Ozzie PHP

Ozzie PHP

11/01/2013 13:03:31
Quote Anchor link
Proberen kan nooit kwaad toch? Je leert er inderdaad erg veel van. En je kan ook mooi je eigen beslissingen nemen! Je kan het precies zo maken zoals je zelf wil.

Je kan dan gaan werken op een manier die voor jou handig is en waar jij je prettig bij voelt. Het is wel een tijdrovend proces, en je zult jezelf vaak tegenkomen. Maar uiteindelijk wordt het dan wel jouw tool waarmee jijzelf prettig kunt werken. En dat laatste is, wat mij betreft, heel belangrijk. En zoals je zelf al aangeeft, je leerter enorm veel van.
 
Wouter J

Wouter J

11/01/2013 13:41:09
Quote Anchor link
Jasper, omdat het maken van een framework echt heel veel tijd kost. Je moet behoorlijk wat dingen maken, denk aan routing, databases, user management, form afhandeling, validatie, ect. Daar gaat echt teveel tijd inzitten. Om je even een beeld te geven: Alle Symfony contributors (dat waren er toen der tijd 150) hebben 1 jaar gedaan over het maken van Symfony2. Bedenk eens hoeveel tijd het jouw in je eentje zou kosten...

Tevens is het ook meteen een idioot moeilijke klus. Je kunt beter eerst ervaring opdoen met een framework voordat je begint met je eigen framework. Hierdoor kun je inspiratie op doen, ontwikkel je een programmeerstijl en wordt je een betere developer.

Tevens vind ik dat je de laatste tijd veel progress maakt in het maken van applicaties in OO, een framework maken is van compleet andere orde en dat zou ervoor zorgen dat je progress in het maken van OO apps stopt, wat ik erg jammer vind.

Quote:
Toch nog een kleine aanpassing, horen de model, controller en view niet in een mapje app?

Nee, maar wat je tegenwoordig (symfony en zf2) ziet is dat ze models, controllers en views opdelen in bundles.
 
Jasper DS

Jasper DS

13/01/2013 23:16:44
Quote Anchor link
Het klopt dat ik inderdaad nog niet toe ben aan het maken van zo'n super groot framework. Maar dat zal ook nooit mijn bedoeling zijn. Wat ik momenteel wil doen is echt een klein klein mini-systeempje maken, je kan het bezien als frameworkje waar ik dan een webshop op kan bouwen.

Ik weet dat het niet makkelijk is maar ik zit in de volgende situatie. Ik heb een opdracht: het maken van een webshop. Nu wil ik dat niet in producerele PHP doen omdat ik vind dat ik al genoeg grote projecten zo heb gemaakt en dat het ook echt gewoon tijd is om OO te gaan werken. Dus ik zou inderdaad met een bestaand framework kunnen gaan werken en dan leer ik hoe ik bepaalde acties moet doen bij dat specifiek framework. Maar eigenlijk wil ik eerst weten wat ik doe en wat er achter de schermen gebeurt voordat ik het ga gebruiken. Ten tweede moet ik héél mijn applicatie kunnen uitleggen. Als ze aan mij vragen waarvoor dient dat bestand uit framework X is de kans erg groot dat ik daar niet op kan antwoorden.

Dus als ik zelf een object georiënteerde webshop kan maken dan pas is het tijd voor andere frameworks.

Morgen ga ik verder met mijn service container in mijn ander topic.
Gewijzigd op 13/01/2013 23:18:12 door Jasper DS
 
Wouter J

Wouter J

13/01/2013 23:19:20
Quote Anchor link
Kijk anders eens naar Silex, zoals al eerder is geopperd.
 
Ozzie PHP

Ozzie PHP

13/01/2013 23:27:34
Quote Anchor link
Gewoon zelf aan de slag Jasper :)
Niet bang zijn, je kan het!
 
Jasper DS

Jasper DS

14/01/2013 14:15:03
Quote Anchor link
Wouter J op 11/01/2013 13:41:09:
Nee, maar wat je tegenwoordig (symfony en zf2) ziet is dat ze models, controllers en views opdelen in bundles.


Ik was nog eens bij zend gaan kijken en daar zag ik de map appellation met daarin de mapjes default, blog en news met elk hun eigen MVC-mappen.

Is dat beter dan alle controllers bij elkaar zetten in de map controller, hetzelfde met de views en models?
 
Moose -

Moose -

14/01/2013 15:09:19
Quote Anchor link
Ik zou beginnen met het maken van je webshop in codeigniter/laravel/silex. Volgens mij onderschat je een beetje hoeveel je van zo'n framework leert als je het daadwerkelijk gaat gebruiken.

Als je met bundels gaat werken lijkt het me logisch om al je MVC mappen te gaan scheiden. Anders is het hele principe van een bundel ook verdwenen he ;)
 
Nicky Monsma

Nicky Monsma

17/01/2013 13:22:51
 
Jasper DS

Jasper DS

06/02/2013 16:48:49
Quote Anchor link
Nicky, volgens mij ben ik het iets groter aan het aanpakken dan wat jij daar hebt. Er moet ruimte zijn voor een map apps (waar models views en controllers inzitten + project gerelateerde bestanden), een map lib die bestaat uit een map met mijn framework (dus de basis die eigenlijk voor elk project hetzelfde is zoals routing, storage klassen, db-adabtors) en andere libs die ik inlaad zoals de Doctrine querybuilder en de symfony Yaml parser. Tot slot is er nog de public map met images , css en js maar die is niet erg belangrijk.
 
Wouter J

Wouter J

06/02/2013 17:05:12
Quote Anchor link
Hoe ik het altijd zou aanraden/doe:
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
22
23
24
25
26
27
28
app/
    cache/
        ... eventuele cache bestanden
    config/
        ... configuratie bestanden
    ... bootstrap bestanden
src/
    ... applicatie specifieke code bijv:
    Controller/
        HelloController.php
    templates/
        Hello/
            default.html.twig
    features/
        ...
vendor/
    ... libraries, zoals je Framework en Symfony en Doctrine
web/
    ... publieke code bijv:
    assets/
        css/
            styles.css
    index.php
composer.json
phpunit.xml.dist
.gitignore
.travis.yml
.behat.yml
 
Jasper DS

Jasper DS

07/02/2013 10:41:51
Quote Anchor link
Oke Wouter, daar kan ik me wel in vinden. Hoe zit het met de autoloader? Jij zei me de autloader van composer te gebruiken? Waar word die "geïnstalleerd" (-> in de vendor map), heeft mijn "framework" dan zelf nog een auloader nodig?
Gewijzigd op 07/02/2013 10:42:29 door Jasper DS
 
- Raoul -

- Raoul -

07/02/2013 12:24:50
Quote Anchor link
De autoloader van Composer is heel erg goed, dus in principe kan je gewoon de Composer-autoloader gebruiken.
 
Jasper DS

Jasper DS

07/02/2013 13:07:01
Quote Anchor link
Er is wel iets vreemds met composer / git. Ik kan zonder problemen swiftmailer op halen maar als ik symfony/yaml probeer binnen te halen word git plotseling niet meer herkent als opdracht...
 
- Raoul -

- Raoul -

07/02/2013 13:08:37
Quote Anchor link
Je haalt toch packages binnen via je composer.json config bestand? En om dan vervolgens "composer update" te doen?
 
Wouter J

Wouter J

07/02/2013 14:23:21
Quote Anchor link
Kun je misschien je composer.json bestand laten zien en de complete output uit de console?
 
Jasper DS

Jasper DS

07/02/2013 15:41:17
Quote Anchor link
composer.json in map1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
{
    "require" : {
        "swiftmailer/swiftmailer": "4.3.*@dev"
    }
}


composer.json in map2
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
{
    "require" : {
        "symfony/yaml": "2.3.*@dev"
    }
}
Gewijzigd op 07/02/2013 15:43:25 door Jasper DS
 

Pagina: 1 2 volgende »



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.