[OOP] Juiste opzet?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cymer Patch Server Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 12919 Introductie This new patch server will be built on Python and Django ReST and GraphQL services with a React frontend, it will consist of several microservices and run on a Kubernetes cluster. It will be supported by several middleware applications such as ElasticSearch, Redis, RabbitMQ, Oracle and Artifactory. Functieomschrijving The Patch Admin team always aim to deliver software at a high quality, we avoid sacrifices here to maintain our velocity. Practically this means that we practice test driven development and perform end-to-end automated testing on our software. This means

Bekijk vacature »

Medior/senior Front-end developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Java Developer

Dit ga je doen Ontwerpen en bouwen van nieuwe functionaliteiten binnen de complexe omgeving; Proactief de processen kwalitatief en efficient inrichten; Opzetten van Unit Tests; Code Reviews; Regie nemen voor innovatieve projecten; Landschap beheren en de bijbehorende ketens hierbij in het oog houden. Hier ga je werken De organisatie is actief binnen de financiele branche en heeft een IT afdeling van circa 450 man. De organisatie voorziet de maatschappij binnen de financiele dienstverlening en is gedurende de jaren een onmisbare schakel geworden. Het is een high profile organisatie waar ze veel te maken hebben met veranderingen voortkomend uit maatschappelijke ontwikkelingen,

Bekijk vacature »

Junior .NET Developer

Dit ga je doen Als junior .NET Developer lever je met jouw oplossingen direct een bijdrage aan de bedrijfsprocessen van de klanten. Werkzaamheden waar jij je zoal mee bezig houdt zijn; Het ontwikkelen, onderhouden en optimaliseren van de draaiende platforms van de klanten; Softwareontwikkeling middels C#, .NET; Klantcontact om de wensen te bespreken en uit te werken; Optimaliseren van de (huidige) bedrijfsprocessen; De IT-afdeling bestaat uit 30 personen verdeeld over 3 teams. Het team waar je in terecht komt bestaat uit ongeveer tien man. Het is een team wat bestaat uit betrokken collega’s, waar iedereen bereidt is om elkaar te

Bekijk vacature »

Fullstack Developer TOTO

Do you want to work with the latest technologies on the development of new systems and applications? Get moving and strengthen Nederlandse Loterij as a Fullstack Developer TOTO. Thanks to your efforts, complex business critical applications are always running smoothly. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Fullstack Developer you score by: Taking ownership of the development cycle of an application in a large scale, high availability, geo redundant landscape Coaching your peer developers and safeguarding code quality Integrating the application with other components of the system using the available API’s Managing

Bekijk vacature »

PHP Developer

Functie Middels Scrum en sprints bouw jij in deze functie mee aan complexe webapplicaties en ons SaaS platform. Hierbij hoort ook architectuur tot een van je taken. Daarnaast ben je één van de leden van het Scrum team. Dat betekent dat je naast je kerntaken ook in contact staat met de product owner. Oftewel, je bent bij het gehele ontwikkelproces betrokken. Tools die hierbij gebruikt worden zijn o.a. PHP, Symfony en Git. Eisen • Minimaal HBO werk- en denkniveau • Minimaal 3 jaar aantoonbare ervaring met PHP • Kennis en ervaring Symfony (Laravel is pré) & Lando • Kennis van

Bekijk vacature »

PHP Developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Back-End Developer in Laravel / PHP

Functie omschrijving Wij zijn op zoek naar een Medior PHP Laravel Developer voor een gaaf bedrijf in de omgeving van Amsterdam! Voor een enthousiast team die zich graag bezig houdt met softwareontwikkeling zijn wij op zoek naar versterking. Je werkt in een klein ontwikkelteam en bent zeer betrokken bij alle aspecten van de softwareoplossingen. Van het ontwerpen tot de oplevering. Binnen deze functie ga je aan de slag met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je krijgt veel te maken met koppelingen naar systemen en de verzoeken van de klant. Je komt terecht in een team, waarbij

Bekijk vacature »

PHP Laravel Ontwikkelaar

Functie omschrijving Weet jij alles over Laravel en krijg je energie van het developen van software hiermee? Laat het weten want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch voor klein bedrijf welke softwareoplossingen maakt voor hun klanten. Jouw taken hierbij: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Documentatie schrijven over applicaties. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein bedrijf. Er werken circa 15 medewerkers, verdeeld in meerdere teams, zoals back-end

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Breda ben je als PHP/Symfony Developer niet alleen gefocust op het ontwikkelen van software. Daarnaast ben je voortdurend bezig met het zoeken naar nieuwe trends en ontwikkelingen die van waarde kunnen zijn voor de efficiëntie van software ontwikkeling. Hieronder een kort overzicht van jouw takenpakket: Het ontwerpen en implementeren van webapplicaties met het Symfony Framework; Het schrijven van een schone en efficiënte codes; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klant; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het

Bekijk vacature »

Back-end PHP Developer

Dit ga je doen Her- en uitbouwen van het inhouse softwareplatform dmv PHP; Onderhouden van bovengenoemd platform in PHP; Sparren met het team; Meedenken over nieuwe functionaliteiten, security etc; Jouw input leveren aan het proces door op de hoogte te blijven van nieuwe ontwikkelingen etc. Hier ga je werken Onze klant, gevestigd in de omgeving van Alkmaar, levert wereldwijd oplossingen op het gebied van IT. Dag in dag uit werken zij met veel passie aan hun product waarmee ze streven naar verbeteringen binnen zorg. Voor onze klant zijn we op zoek naar een medior PHP Developer. Je komt te werken

Bekijk vacature »

.Net ontwikkelaars voor de zorgsector

Bedrijfsomschrijving Voor onze klant in de omgeving van Zwolle zijn wij op zoek naar een ervaren .Net ontwikkelaar, bij voorkeur met ervaring binnen de belangrijkste sector van Nederland, namelijk: de zorgsector. Deze internationale organisatie ontwikkelt software voor de zorgsector. Er werken zo'n 25 medewerkers hard aan een oplossing die gebruikt wordt door heel Nederland. Er heerst een informele sfeer waarbij er altijd ruimte is voor een grapje. Je collega's zijn stuk voor stuk sterke ontwikkelaars vanuit verschillende achtergronden en met verschillende leeftijden. Je komt hier terecht in een organisatie die zich hard inzet om de zorgsector te verbeteren. De mogelijkheden

Bekijk vacature »

Java (Java EE) Developer

In het kort Werken als Java developer betekent werken aan complexe IT projecten bij onder meer een internationaal containeroverslag bedrijf. Zo sturen we apparaten en eindgebruikers aan d.m.v. onze custom-made software oplossing, die dagelijkse vele duizenden containers verwerkt. Denk aan systemen die volautomatische kranen aansturen en op afstand bedienen, de volledige afhandeling van containernummerherkenning bij het laden en lossen van zeeschepen of het tonen van instructies aan de chauffeurs van ruim 300 straddle carriers. En dat allemaal redundant, robuust en in een dynamische 24/7 omgeving! Jij versterkt ons ontwikkelteam en gaat aan de slag met oa. Java i.c.m. Spring (Boot),

Bekijk vacature »

VB.NET developer

Functie Het development team waar jij in terecht komt bestaat uit twee ervaren software developers. De directeur/eigenaar is tevens één van deze developers. Jij werkt direct samen met jouw werkgever en kan dan ook veel kennis en ervaring bij dit bedrijf op doen. Als team zijn jullie verantwoordelijk voor de kantoorapplicatie die deze organisatie aanbied in een niche markt. Het team is op dit moment actief bezig met een migratie waarbij het eindstation eindigt in een C# .NET omgeving. Echter is een deel van de software al geschreven in C# .NET. Hierbij is gebruik gemaakt van C# .NET, CSS, HTML,

Bekijk vacature »

PHP Developer

Dit ga je doen Je werkt nauw samen met het websitebureau aan de ontwikkeling en optimalisering van het internationale platform; Je ziet nieuwe webshops op en voert optimalisaties door; Je bouwt aan technische, functioneel en commercial resultaat; Je vindt het leuk om zelfstandig binnen een internationale organisatie te werken, maar krijgt ook energie om samen met collega's te werken. Hier ga je werken Voor een bedrijf in de regio Rotterdam zijn wij opzoek naar een PHP Developer. Je wordt onderdeel van het communicatieteam en gaat je bezighouden met het optimaliseren van de website van dit internationale bedrijf. Je schakelt veel

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

13/05/2024 23:39:35
 
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.