Mappen-structuur OOP applicatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

- Raoul -

- Raoul -

07/02/2013 15:42:47
Quote Anchor link
En de console output?
 
PHP hulp

PHP hulp

25/04/2024 17:26:23
 
Jasper DS

Jasper DS

07/02/2013 15:47:04
Quote Anchor link
Meh, nvm. Het werkt plotseling wel? :-)

Heb wel nog een bijkomende vraag. Hoe zit het met een live omgeving? Werkt composer daar ook in? Hoe reageert composer daar?

Of is het alleen voor lokaal gebruik en als je iets online wilt zetten gewoon hop alles via ftp op de server?

@Wouter, nog even een vraag over je mappen-structuur. Wat is het voordeel van de opsplitsing tussen de map app en src? Het zijn toch beiden project specifieke bestanden?

En nog even iets, maakt composer niet een veeeel te lang path?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
vendor\symfony\yaml\Symfony\Component\Yaml


Waarom niet gewoon vendor/Symfony/Component/Yaml?
Gewijzigd op 07/02/2013 16:42:35 door Jasper DS
 
Wouter J

Wouter J

07/02/2013 17:27:39
Quote Anchor link
Quote:
Het werkt plotseling wel?

Het werkt misschien wel, maar lijkt me niet juist. Je hoort alles in 1 composer.json bestand te zetten.

Quote:
Hoe zit het met een live omgeving? Werkt composer daar ook in? Hoe reageert composer daar?

Dat ligt aan je host. Als je daar toegang hebt tot de console dan werkt composer daar ook, anders is het inderdaad gewoon alles overhoppen.

Quote:
Wat is het voordeel van de opsplitsing tussen de map app en src? Het zijn toch beiden project specifieke bestanden?

De src map is totaal variabel. Daar zit per project totaal iets anders in.
In de app map zitten dingen als de configuratie, cache en bootstrap bestanden. Deze zijn niet variabel, de structuur van deze map zal altijd hetzelfde zijn, alleen sommige bestanden (config en cache) zullen anders zijn.

Quote:
En nog even iets, maakt composer niet een veeeel te lang path?
[..code..]
Waarom niet gewoon vendor/Symfony/Component/Yaml?

Omdat Packagist wil uitsluiten dat je 2 packages hebt met dezelfde class. Stel je voor dat "wouterj/awesome" een Wj\Awesome\Foo klasse heeft en dat "copycat/awesome" ook een Wj\Awesome\Foo klasse heeft. In dat geval krijg je een conflict met jou 'korte' methode, met de huidige methode niet, aangezien alles eerst in mapjes op basis van de package naam is gemaakt.

Tevens zou ik me niet druk maken over de mappen structuur van deze third party libraries, dat is namelijk de taak van Composer, die moet zich druk maken hoe die alles goed kan autoloaden.
 
Jasper DS

Jasper DS

07/02/2013 18:19:10
Quote Anchor link
Wouter J op 07/02/2013 17:27:39:
Quote:
Het werkt plotseling wel?

Het werkt misschien wel, maar lijkt me niet juist. Je hoort alles in 1 composer.json bestand te zetten.

Ik had alles in één .json bestand, dat werkte niet dus toen ben ik gaan testen in verschillende mappen met elk een andere .json. Uiteindelijk lukt het nu wel dus geen probleem.

Wouter J op 07/02/2013 17:27:39:
Omdat Packagist wil uitsluiten dat je 2 packages hebt met dezelfde class. Stel je voor dat "wouterj/awesome" een Wj\Awesome\Foo klasse heeft en dat "copycat/awesome" ook een Wj\Awesome\Foo klasse heeft. In dat geval krijg je een conflict met jou 'korte' methode, met de huidige methode niet, aangezien alles eerst in mapjes op basis van de package naam is gemaakt.

Is het de bedoeling dat ik mijn "framework" dan ook binnenhaal via composer? Anders is het vendor/JdsFramework/almijnmappenenbestanden idpv zo'n lange naam niet?

Ah en Wouter, werkt jouw snakeMvc ik zie dat je in index.php een $container geeft aan je frontcontroller maar die $container word nergens aangemaakt?

Nog een vraag, dus je zegt dat bootstrap.php ook in de app map hoort? Is die niet voor elk project hetzelfde en hoort hij daarom niet gewoon in de map van mijn "framework"?
Gewijzigd op 07/02/2013 18:25:42 door Jasper DS
 
Wouter J

Wouter J

08/02/2013 15:48:48
Quote Anchor link
Quote:
Is het de bedoeling dat ik mijn "framework" dan ook binnenhaal via composer? Anders is het vendor/JdsFramework/almijnmappenenbestanden idpv zo'n lange naam niet?

Je laat inderdaad vaak je framework apart in via composer. Wat er vaak wordt gedaan is dat je 2 packages hebt:
- Het framework, deze bevat alles wat in vendor/JdsFramework/... staat
- De SkeletonApplication of Standard Edition, deze laad het framework in en geeft de beste directory structuur om te gebruiken als je je framework gebruikt. Daarnaast zie je vaak dat hier ook nog wat 3th party libraries worden ingeladen die makkelijk werken icm jouw framework, maar niet verplicht zijn voor het werken van je framework.

Quote:
Ah en Wouter, werkt jouw snakeMvc ik zie dat je in index.php een $container geeft aan je frontcontroller maar die $container word nergens aangemaakt?

Oh, daar moet je helemaal niet naar kijken (ik zal hem wel eens van GitHub halen). Als ik sommige code daarvan zie schaam ik me dat ik dat ooit heb kunnen schrijven :P

Quote:
Nog een vraag, dus je zegt dat bootstrap.php ook in de app map hoort? Is die niet voor elk project hetzelfde en hoort hij daarom niet gewoon in de map van mijn "framework"?

Wie zegt dat ik altijd dezelfde bootstrap wil hebben? Misschien heb ik wel een project waarbij ik wat extra dingen in de bootstrap wil doen.
 
Jasper DS

Jasper DS

08/02/2013 15:58:05
Quote Anchor link
Bedankt voor het antwoord Wouter, dat lijkt allemaal vrij duidelijk.Heb je mijn berichtje toevallig nog gelezen? Ik probeer mijn classes te autoloaden via composer maar hij zegt altijd "failed to open stream..." ik heb waarschijnlijk mijn composer.json verkeerd ingevuld?

Dan nog een vraag.
Mijn mappen-structuur ziet er nu zo uit:
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
app
src
vendor
    composer
    Jframe
        Controller
            FrontController.php
            FrontControllerInterface.php
        Autoloader
        Model
        ..
    symfony
        yaml
            Symfony
                Component
                    Yaml
                        Yaml.php
web


Stel je nu voor dat mijn framework één of ander third-party lib nodig heeft voor te kunnen draaien, ontstaat er dan nog een vendor map in mijn framework map speciefiek voor het framework? Of gebruikt die gewoon de vendor map van van de applicatie?
 
Wouter J

Wouter J

08/02/2013 16:10:25
Quote Anchor link
Quote:
ik heb waarschijnlijk mijn composer.json verkeerd ingevuld?

Waarschijnlijk, misschien handig om je composer.json te laten zien?

Quote:
Stel je nu voor dat mijn framework één of ander third-party lib nodig heeft voor te kunnen draaien, ontstaat er dan nog een vendor map in mijn framework map speciefiek voor het framework? Of gebruikt die gewoon de vendor map van van de applicatie?

Dat laatste
 
Jasper DS

Jasper DS

08/02/2013 16:19:22
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
{
    "require" : {
        "symfony/yaml": "2.3.*@dev"
    },
    "autoload": {
        "psr-0": { "Jframe": "vendor/Jframe" }
    },
}


En als ik probeer te updaten via
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$ composer update


dan komt er dat er geen files geupdate moeten worden.
Gewijzigd op 08/02/2013 16:19:32 door Jasper DS
 
Wouter J

Wouter J

08/02/2013 16:23:45
Quote Anchor link
Je moet 'Jframe' eruit halen.

En dit:
Quote:
dan komt er dat er geen files geupdate moeten worden.

is heel normaal, hij geeft aan dat er geen packages geupdated moeten worden, maar hij zal wel de autoloading information updaten (want daarna zie je staan 'generating autoload files')
 
Jasper DS

Jasper DS

08/02/2013 16:47:25
Quote Anchor link
Dat is al goed, hij vind de file maar de classe niet...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$fc = new \Jframe\Controller\FrontController();


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$fc = new Jframe\Controller\FrontController();
Gewijzigd op 08/02/2013 16:49:41 door Jasper DS
 
Wouter J

Wouter J

08/02/2013 16:50:45
Quote Anchor link
Hoe ziet je file er dan uit? (even het begin tot en met het declareren van de class)
 
Jasper DS

Jasper DS

08/02/2013 16:57:36
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

namespace Jframe\Controller;

class FrontController implements FrontControllerInterface
{
    ...

?>
 
Wouter J

Wouter J

08/02/2013 17:06:18
Quote Anchor link
En de error die je krijgt is?
 
Jasper DS

Jasper DS

08/02/2013 17:08:06
Quote Anchor link
Class 'Jframe\Controller\FrontController' not found
 
Wouter J

Wouter J

08/02/2013 17:18:08
Quote Anchor link
Ja, dan is het bestand dus niet gevonden. Heb je je json al aangepast naar wat ik zei? (zonder Jframe?)
 
Jasper DS

Jasper DS

08/02/2013 17:22:39
Quote Anchor link
Wouter, ik heb het gevonden. Ik had Jframe van de namespace verwijdert maar niet uit het path. Nu klopt het wel geloof ik. Even een klein misverstand langs mijn kant. Bedankt!
 

Pagina: « vorige 1 2



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.