[OOP] Juiste opzet?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior Front end developer

Functie Als Front end developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

Frontend Developer Vue Nuxt HBO Javascript

Samengevat: Deze werkgever levert elke dag betere digitale gebruikerservaringen. Ben jij geschikt als frontend Developer? Heb je ervaring met Vue en Nuxt? Vaste baan: Front-End Developer HBO €3.100 - €4.600 Zij bieden opdrachtgevers een complete dienstverlening op gebied van ontwerpen en ontwikkelen van websites, zoekmachine optimalisatie, online adverteren, content marketing en conversie verbetering. Zij werken met een eigen ontwikkeld CMS. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Deze werkgever staat open voor elke nieuwe trend. Onze systemen zijn groot

Bekijk vacature »

Medior/Senior Python developer (Django)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en werken ze met pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Er is een kwaliteitsfocus en dan biedt ruimte om verbeteringen echt door te voeren binnen de gehele

Bekijk vacature »

Front-end developer

Functie Jij komt te werken in een team van 5 developers. het product is continue in beweging. Nieuwe en bestaande klanten vragen om vaak nieuwe features. Hierin ben jij zeer belangrijk om te zorgen dat de functionaliteiten goed opgezet worden op technisch vlak. Designs krijg je aangeleverd van een externe partij zodat jij je primair kan focussen op de techniek! Je hebt daarbij alle vrijheid om je eigen creativiteit toe te passen en mee te denken over de gebruikte technieken. Het gezamenlijke doel is een product dat functioneel zeer gebruiksvriendelijk is en het bedrijfsproces van de gebruikers versneld en kwalitatief

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus 2023 bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je

Bekijk vacature »

Database ontwikkelaar

Functieomschrijving Wil jij aan gave logistieke softwareprojecten werken en bij een uniek softwarebedrijf in de regio van Tilburg? Wacht niet langer en reageer snel op deze vacature. Als Database ontwikkelaar ga je aan de slag het schrijven van stored procedures en verder uitbouwen van de SQL database. Je werkt in een database team, met allemaal mensen die energie krijgen van software en techniek. Verder krijg je als taak: Optimaliseren en uitbouwen van de MS SQL databases die gebruikt worden; Optimaliseren van query's, waardoor er efficiënter gewerkt kan worden; Je werkt met de technieken T-SQL of PL/SQL; Bij interesse kan je

Bekijk vacature »

Full Stack Developer

Dit ga je doen Ontwikkelen van Product Informatie Management (PIM) systemen; Werken aan zowel grotere als kleine projecten voor toonaangevende klanten binnen o.a. de retail; Verantwoordelijk voor de front-end werkzaamheden; Naast de front-end werk je ook aan de backend. Hier ga je werken Als Full Stack Developer komt je te werken binnen een vooruitstrevende organisatie die Product Informatie Management (PIM) systemen levert aan hun klanten. Hun klanten zijn toonaangevende bedrijven binnen o.a. de retail. De organisatie zit gevestigd in regio Zwolle en bestaat uit zo'n 35 medewerkers, waarvan 30 IT. Je komt te werken binnen één van de zelfsturende development

Bekijk vacature »

C#.NET Developer Jr. Functie

Functie omschrijving Bouw jij graag aan applicaties om processen in distributiecentra te optimaliseren? Wij zijn op zoek naar een C#.NET ontwikkelaar in regio Breda die hier graag een steentje aan bijdraagt! Jouw werkzaamheden zullen er als volgt uitzien: Je krijgt veel vrijheid in de keuze van de technieken die je gaat gebruiken. Uiteraard wel binnen de gestelde kaders, en door gebruik te maken van het .NET platform. Je gaat aan de slag met de ontwikkeling van een nieuwe module binnen de WMS suite van dit bedrijf. Deze "carrier" module gaat er voor zorgen dat de selectie van een vervoerder volledig

Bekijk vacature »

Front-end developer Consultancy in teamverband wer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers. Momenteel zijn ze op zoek naar een ervaren Front-end of Fullstack developer die samen met de consultants aan de slag gaat om de business requirements te vertalen naar technische oplossingen. Los van het finetunen van extenties, help je bij het configureren van bijvoorbeeld een mobiel bankieren app. Hierin ben je van A tot Z betrokken en zie je bijvoorbeeld ook toe op de uitvoering van testen. Je expertise wordt optimaal benut en je krijgt verschillende kansen om deze uit te breiden door met verschillende innovatieve technologieën aan

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

.NET Developer

Functie omschrijving Jij gaat in de functie van Software Developer werken met C# en .NET framework. Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met back-end development. Verder staat dit

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in de regio van Bergen op Zoom ben je als PHP Developer niet alleen gefocust op het ontwikkelen van Software. Daarnaast ben je ook voortdurend bezig met het zoeken naar nieuwe mogelijkheden en innovaties die essentieel kunnen zijn voor de efficiëntie van software ontwikkeling. Je deelt veel kennis en informatie met het team en ontvangt deze dan ook graag terug. Techstack: PHP, Symfony & mySQL. Bedrijfsprofiel Deze uitdagende opdrachtgever is ruim 20 jaar actief in de regio Bergen op Zoom. Het vooruitstrevende team staat de hele dag voor je klaar om je te helpen en ondersteunen.

Bekijk vacature »

Back end developer

Functie Jij als full stack ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor 90% van je tijd je bezig houden met het ontwikkelen van grote maatwerk applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. De technische uitdaging momenteel is dat

Bekijk vacature »

Software ontwikkelaar

Ben jij graag bezig met verschillende projecten? Vind jij beleving van klanten én medewerkers ook belangrijk? Wij zijn vanwege de doorontwikkeling van het applicatielandschap van onze opdrachtgever op zoek naar een fulltime software ontwikkelaar. Omschrijving Jij en jouw collega’s zijn verantwoordelijk voor de continuïteit en waarborging van het applicatielandschap. Om de processen vloeiend te laten verlopen is software ontwikkeling daarom van essentieel belang. Onze opdrachtgever doet dit voornamelijk zelf, met door hun eigen ontwikkelde applicaties. Dit betekent dat jij: functionele eisen vertaalt naar gebruiksvriendelijke software; tijdens SCRUM sessies advies geeft over het te bouwen ontwerp; nieuwe software ontwikkelt en het

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar start jij in één van onze vier scrumteams. Met 30 ontwikkelaars werk jij aan de doorontwikkeling van ons core product. Ook werkt jouw team aan maatwerkoplossingen op aanvraag van de klant en op projectbasis. Wij vinden het erg belangrijk dat onze ontwikkelaars met plezier naar werk gaan. Een deel hiervan ligt uiteraard bij jezelf, als jij ontwikkelen niet leuk vindt, ben jij bij ons echt aan het verkeerde adres. Jouw team bestaat namelijk uit een groep gepassioneerde vakidioten die dit werk doen omdat dit eerst een hobby was! Daarnaast wordt er intern rekening gehouden met

Bekijk vacature »
Koen Vlaswinkel

Koen Vlaswinkel

08/01/2013 16:49:54
Quote Anchor link
Hallo,

Ik ben begonnen met een eigen CMS voor een bepaald spel. Ik ben meteen begonnen met programmeren in OOP en dit ging me ook wel goed af. Ik ben nu alleen benieuwd of mijn gedachte wel de goede is.
Dit zijn mijn klassen en methodes:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
* Article
  - __construct(int $id, string $title, string $text, string $date)
  - getID()
  - getTitle()
  - getText()
  - getDateString()
* DB [i](Ik weet dat ik hierin te veel doe, maar hoe moet ik dat anders oplossen?)[/i]
  - static init(array $options)
  - private static setOptions(array $options)
  - private static(IAuthentication $auth)
  - static getAuth()
  - static setParser(Parser $parser)
  - static getParser()
  - static setSession(Session $session)
  - static getSession()
  - static isUser(string $user, string $password)
  - static getUser(User $user)
  - static checkUser(string $id)
  - static getRules()
  - static getArticles()
  - static getEvents()
  - static getTutorials()
  - static getProjects()
  - static getProjectByID(int $id)
  - static getAllUserPages()
  - static getAllEnabledUserPages()
  - static getAllShownUserPages()
  - static getUserPageByIdentifier(string $identifier)
  - static setDynmapURL(string $url)
  - static getDynmapURL()
* Event
  - __construct(int $id, string $title, string $description, string $from_date, string $to_date)
  - getTitle()
  - getDescription()
  - getTime() ([i]deprecated[/i])
  - getDateString()
  - getID()
* EventsPage extends Page
  - __construct(boolean $enabled = true)
  - printPage()
* GalleryPage extends Page
  - __construct(string $mainfolder = 'albums', boolean $enabled = true)
  - printPage()
* HomePage extends Page
  - __construct(boolean $enabled = true)
  - printPage()
* [i]interface IAuthentication[/i]
  - __construct(array $options)
  - checkPassword($string hashed_password, string $user_password)
  - getQuery()
* LoginPage extends Page
  - __construct()
  - processPage()
  - printPage()
* MapPage extends Page
  - __construct(boolean $enabled = true)
  - printPage()
* Menu
  - __construct()
  - add(MenuItem $item)
  - getShownMenuItems()
  - getAllMenuItems()
* MenuItem
  - __construct(string $text, string $url, boolean $in_menu = true)
  - isShown()
  - getText()
  - getURL()
* NewsPage
  - __construct(boolean $enabled = true)
  - printPage()
* Page
  - __construct($enabled = true)
  - displayPage()
  - printPage()
  - processPage()
* PageNotFoundException
  - __construct(string $message = null, int $code = 0)
* PageNotFoundPage extends Page
  - __construct()
  - printPage()
  - processPage()
* ParserExtends extends Twig_Extension
  - __construct()
  - getName()
  - getFilters()
  - bbcodeFilter(string $string)
  - stripbbtags(string $string)
* PersonalMessage [i]niet gebruikt, dus nog niet af[/i]
* Project
  - __construct(int $id, string $title, string $description, string $rules, boolean $official = false, int $x = 0, int $z = 0, string $dynmap = '')
  - getTitle()
  - getDescription()
  - getID()
  - getRules()
  - isOfficial()
  - getX()
  - getY()
  - getZ()
  - getDynmapFrame(int $width = 700, int $height = 600)
  - getOfficialString()
* ProjectNotFoundException
  - __construct(string $message = null, int $code = 0)
* ProjectPage extends Page
  - __construct(boolean $enabled = true)
  - printPage()
* ProjectsPage extends Page()
  - __construct(boolean $enabled = true)
  - printPage()
* Renderer [i]Gebruik ik als static class voor het gebruiken van Twig[/i]
  - static init(string $templateDir, boolean $debug = false, boolean $strict_var = true)
  - static setVariable(string $name, string $value)
  - static unsetVariable(string $name)
  - static loadTemplate($file = 'index.phtml')
  - static render()
  - static getArguments()
* Rule
  - __construct(int $number, int $id, string $rule)
  - getNumber()
  - getID()
  - getText()
  - toString()
* RulesPage extends Page
  - __construct(boolean $enabled = true)
  - printPage()
* Session [i]Niet gebruikt en van internet afgehaald[/i]
  - __construct(string $name)
  - set(string $name, string $value)
  - get(string $name, string $default='')
  - destroy()
* TutorialsPage extends Page
  - __construct(boolean $enabled = true)
  - printPage()
* User
  - __construct(int $id, string $username)
  - getID()
  - getUsername()
* UserPage
  - __construct(string $identifier, string $title, string $text, boolean $enabled = true, boolean $in_menu = false)
  - isInMenu()
  - getIdentifier()
  - printPage()
  - getTitle()
* XAuthAuthentication implements IAuthentication
  - __construct(array $options)
  - checkPassword(string $checkPass, string $realPass, string $algorithm = 'xauth')
  - getQuery()
  - setOptions(array $options)
  - getUsernameColumn()
  - getIDColumn()
  - getPasswordColumn()

De lijst is een beetje lang maar ik hoop dat iemand zin en tijd heeft om er kritiek op te geven. Ik weet dat er vast en zeker kritiek zal komen op de static methoden, maar ik wil dan ook graag weten hoe ik het anders kan aanpakken.

Mijn tweede vraag is, hoe ga ik dit aanpakken in mijn index.php. Ik los het nu op met switches etc. Dus als volgt:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
// Set up database
DB::init($config['db']);
switch ($config['auth']['plugin']) {
        case
'xauth':
                DB::setAuth(new XAuthAuthentication($config['auth']));
                break;
        default:

        
                break;
}


// Set up session
$session = new Session('mccms');
DB::setSession($session);

// Include BBCode Parser
require ROOT . '/lib/BBCode.php';

// Set up Twig
require_once ROOT . '/lib/BBCode.php';
require_once ROOT . '/lib/Twig/Autoloader.php';
Renderer::init('templates', true, true);

// Set up Dynmap URL
DB::setDynmapURL($config['dynmap']['url']);

if (!isset($_GET['p']) || empty($_GET['p'])) {
        $_GET['p'] = $config['homepage'];
}


$menu = new Menu();

// Get page
switch ($_GET['p']) {
        case
'home':
        case
'':
        case
null:
                $page = new HomePage();
                break;
        case
'news':
                $page = new NewsPage($config['pages']['news']);
                break;
        case
'rules':
                $page = new RulesPage($config['pages']['rules']);
                break;
        case
'events':
                $page = new EventsPage($config['pages']['events']);
                break;
        case
'projects':
                $page = new ProjectsPage($config['pages']['projects']);
                break;
        case
'gallery':
                $page = new GalleryPage(ROOT . '/albums', $config['pages']['gallery']);
                break;
        case
'tutorials':
                $page = new TutorialsPage($config['pages']['tutorials']);
                break;
        case
'map':
                $page = new MapPage($config['dynmap']['enabled']);
                break;
        case
'project':
                $page = new ProjectPage($config['pages']['projects']);
                break;
        case
'login':
                $page = new LoginPage();
                break;
        default:

                try {
                        if ($config['pages']['userpages'] === true) {
                                $page = DB::getUserPageByIdentifier($_GET['p']);
                        }
else {
                                $page = new PageNotFoundPage();
                        }
                }
catch (PageNotFoundException $e) {
                        $page = new PageNotFoundPage();
                }

                break;
}


// Adding menu items
$menu->add(new MenuItem('Home', '/'));
$menu->add(new MenuItem('News', '/news', ($config['pages']['news'] && $config['homepage'] != 'news')));
$menu->add(new MenuItem('Rules', '/rules', ($config['pages']['rules'] && $config['homepage'] != 'rules')));
$menu->add(new MenuItem('Events', '/events', ($config['pages']['events'] && $config['homepage'] != 'events')));
$menu->add(new MenuItem('Projects', '/projects', ($config['pages']['projects'] && $config['homepage'] != 'projects')));
$menu->add(new MenuItem('Gallery', '/gallery', ($config['pages']['gallery'] && $config['homepage'] != 'gallery')));
$menu->add(new MenuItem('Tutorials', '/tutorials', ($config['pages']['tutorials'] && $config['homepage'] != 'tutorials')));
$menu->add(new MenuItem('Map', '/map', ($config['dynmap']['enabled'] && $config['homepage'] != 'map')));

if ($config['pages']['userpages'] === true) {
    $userpages = DB::getAllShownUserPages();
    foreach ($userpages as $userpage) {
        $menu->add(new MenuItem($userpage->getTitle(), '/' . $userpage->getIdentifier()));
    }
}

$page->displayPage();
Renderer::setVariable('menuitems', $menu->getShownMenuItems());
Renderer::setVariable('title', $config['site']['title']);
Renderer::render();
[
/code]
Gewijzigd op 09/01/2013 07:18:28 door Koen Vlaswinkel
 
PHP hulp

PHP hulp

28/03/2024 12:37:42
 
Koen Vlaswinkel

Koen Vlaswinkel

10/01/2013 16:17:16
Quote Anchor link
Ik ben vooral benieuwd naar mijn tweede vraag, dus hoe ik dit zou moeten oplossen in index.php, want ik denk niet dat mijn manier de juiste is.
 
No One

No One

10/01/2013 16:24:39
Quote Anchor link
in een database kun je gelijk de menu klasses dynamisch invullen en zodoende de menuitems te printen...
 
Moose -

Moose -

10/01/2013 16:29:06
Quote Anchor link
Je kunt dit leuk oplossen met een route array. Zie ook http://symfony.com/doc/current/book/routing.html

Het is wel handig om alle documentation van Symfony door te lezen, zelfs als je niks met het framework gaat doen. Je kan er veel inspiratie van op doen
 
Koen Vlaswinkel

Koen Vlaswinkel

10/01/2013 16:44:48
Quote Anchor link
Dus dat zou eventueel ook kunnen met een afgeslankte versie van Symfony zoals Silex? http://silex.sensiolabs.org/
 
Moose -

Moose -

10/01/2013 16:53:44
Quote Anchor link
Ja maar dan krijg je dus alles in 1 pagina. Overigens is het schrijven van zo'n router functie heel makkelijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$routes = array (
    '/home' => 'HomeController',
    '/login' => 'LoginController',
    '/news' => 'NewsController'
);

$pathinfo = ..; // iets om path info te vinden

if (null !== $controllerName = $routes[$pathinfo]) {
    // path gevonden
    $controller = new $controllerName();
    // doe iets met je controller zoals een methode start
}
 
Koen Vlaswinkel

Koen Vlaswinkel

10/01/2013 16:58:36
Quote Anchor link
Ik heb dan wel een ander probleem namelijk dat de gebruiker zelf nog pagina's kan aanmaken in het administratiepaneel, waarvoor mijn UserPage class is. Deze kan ik dus wel toevoegen aan $routes, maar moet ik dan voor alle de UserPage opgeven, en dan als parameter de $pathinfo?
 
Moose -

Moose -

10/01/2013 17:05:31
Quote Anchor link
Je kunt eerst kijken of hij in de route array zit: laadt die
zo niet heeft de gebruiker een pagina met die naam aangemaakt: laadt die
zo niet: 404
 
Koen Vlaswinkel

Koen Vlaswinkel

10/01/2013 17:09:36
Quote Anchor link
Dat lijkt me een goede oplossing, alleen hoe combineer ik dit dan met het menu? Anders moet ik twee regels aanpassen als ik een pagina handmatig wil toevoegen.
 
Wouter J

Wouter J

10/01/2013 17:58:40
Quote Anchor link
Ik zou vooral wel naar Silex kijken. En dat alles in 1 pagina zit is echt een ding wat verkeerd begrepen wordt aan Silex. Silex is een micro framework, dat betekend dat je zelf de basis ontwerpt en die dan kunt uitbouwen.

Het is voor beginners vaak handig om te beginnen met zo'n micro-frameworkje.
 



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.