[OOP] Juiste opzet?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Systeembeheerder

Ben jij iemand die uitgedaagd wil worden? Een Systeembeheerder die het beheren van diverse IT omgevingen leuk vindt , graag in een team werkt en wil je jezelf wil blijven ontwikkelen? Kortom, ben jij die initiatiefrijke en kundige systeembeheerder en wil je doen waar je goed in bent? Kom dat dan bij ons doen! Wat ga je doen? Als Systeembeheer fungeer je als intermediair tussen de business en de techniek. Samen met het team Systeembeheer sta je in voor de bouw, het beheer, onderhoud en de uitbouw van de volledige ICT-infrastructuur. Met de overgang van on-premise naar een 'hybrid cloud'

Bekijk vacature »

(junior) Product Manager / Applicatiebeheerder

Wij zoeken een ervaren zelfstandige, accurate en analytische medewerker in de rol van technisch specialist kan doorgroeien naar de functie van product manager /applicatiebeheerder. Je bent in ons team verantwoordelijk voor het beheer en de (door)ontwikkeling van onze applicatie en productieomgeving voor onze nationale en internationale opdrachtgevers. Een medewerker die waar nodig ondersteunt bij andere activiteiten zoals training van gebruikers en het ondersteunen van klanten. Wie zijn wij Onze organisatie bestaat uit een juridisch adviesbureau (Juris) en een B2B-softwareleverancier (Visuall). Wij zijn actief in binnen- en buitenland en werken met name voor grote publieke en private organisaties. Wij geloven dat

Bekijk vacature »

Backend .NET developer tot €5000,- p/maand

Bedrijfsomschrijving Onze klant heeft een internationale kring van klanten binnen de retail sector. Ze bedienen bekende winkelketens met alle mogelijke applicaties die je kunt bedenken. Van afrekensystemen tot voorraadbeheer, van handhelds tot managementrapportage tools en front- en backoffice applicaties. Het bedrijf bestaat nu zo’n 20 jaar en bestaat uit betrokken medewerkers die samen voor een goed resultaat gaan. De sfeer is open en informeel en de successen komen vooral door het innovatieve karakter van het bedrijf en de medewerkers. Functieomschrijving In deze mooie functie als backend .NET developer ga je werken aan de backoffice applicaties die binnen de grotere retailers

Bekijk vacature »

Full Stack .NET Developer Graduate Program - Exper

Via Experis Academy krijg je een unieke kans om de in de branche gewilde expertise op te doen die jou tot een gewilde Full Stack .NET Developer met een frontend-specialisatie maken. Het programma duurt 21 maanden en eindigt met een vaste baan bij een van onze vele, boeiende opdrachtgevers, of je blijft bij ons (Experis) werken. Ons programma tot .NET Developer Experis Academy start met een op maat gemaakte cursus die drie maanden duurt. Gedurende deze maanden komen theorie, praktijk en .NET-certificeringen aan bod. Hierbij is het onderwijsprogramma gebaseerd op de principes als versnelde training en flipped classroom. De volgende

Bekijk vacature »

Software Developer OutSystems @ Regio Den Bosch

2021-07-21 iSense Software Developer OutSystems Heb je al ervaring met OutSystems of wil je je hierin (verder) verdiepen? Wil je graag werken bij een ambitieus bedrijf dat de grootste bedrijven van Nederland als klanten heeft? Dan is dit dé vacature voor jou! ISMO50519 Organisatie Voor onze klant, een ambitieus en vooruitstrevend bedrijf in regio Den Bosch, zoeken we een Software Developer die met OutSystems aan de slag gaat. Het bedrijf werkt voor verschillende bedrijven en heeft de grootste organisaties van Nederland als klanten! Je komt te werken in een team dat dedicated voor een klant werkt zodat je alle ins

Bekijk vacature »

Microsoft Business Intelligence ontwikkelaar

Bedrijfsomschrijving Mijn opdrachtgever is gevestigd in Best en een bekende speler binnen haar vakgebied. De ICT afdeling is momenteel 22 FTE groot en de afdeling management informatie is momenteel 4 FTE groot. Binnen de organisatie heerst er een prettige werksfeer. Functieomschrijving Ter uitbreiding van het huidige team (momenteel 4 FTE), is mijn klant op zoek naar een Microsoft Business Intelligence ontwikkelaar. Binnen deze functie ben je verantwoordelijk voor de doorontwikkeling van het Microsoft datawarehouse. Kort samengevat zul je betrokken zijn bij; -Het ontwikkelen en onderhouden van ETL processen middels SSIS -Het modelleren van datamarts -Het dimensionaal modelleren met SSAS -Ontwikkelen

Bekijk vacature »

IT-traineeship junior software developer

Zoek jij een stevige uitdaging en de mogelijkheid om veel nieuwe dingen te leren in een dynamisch vakgebied? Doe mee aan ons IT Professional Program en ontwikkel jezelf tot software engineer! Je begint met een opleidingstraject van ongeveer 4 maanden. Hierin ga je aan de slag met verschillende technieken die je op conceptueel niveau leert te overzien en interpreteren. Onderwerpen die aan bod komen zijn o.a. programmeren (Java/C#/Python), Object Oriëntatie, Databases, Webservices & webtechnologieën, Domain Driven Design en Continuous Integration/Continuous Delivery. Sommige van deze onderdelen sluit je af met een examen en bijbehorende certificering. Het opleidingstraject zelf sluit je af

Bekijk vacature »

C# .NET Software Ontwikkelaar / HBO

Wie wordt jouw werkgever?: Wij zijn een softwarebedrijf. Ben jij een ervaren software developer? Heb jij ervaring met web development? Vaste baan: C# .NET Software Ontwikkelaar HBO 3.200 - 4.800 Software Developer Wij zijn een vooruitstrevend bedrijf dat verschillende online softwareprogramma’s aanbiedt. We maken hierbij gebruik van de allernieuwste webtechnieken. Wij zijn een veelzijdige organisatie. Je werkt voor onze eigen IT organisatie. We werken met moderne technologie en staan open voor innovatie. Je komt in een ambitieus team terecht. Samen maken we met creatieve oplossingen onze websites nog beter. Heb jij zin in een nieuwe uitdaging in een prettige werkomgeving?

Bekijk vacature »

Fullstack Developer /.NET Core @ Almere

2021-08-16 iSense Fullstack Developer /.NET Core Ben jij een ervaren Fullstack Developer, die graag zijn expertise van NET.Core inzet in een dynamische en bedrijf kritische omgeving? Is een jonge club waar je als IT-team het hart vormt van de organisatie, echt iets voor jou? Lees dan snel verder! ISMA49157 Organisatie Als Fullstack Developer kom je te werken in de regio Almere bij een organisatie, dat als internationale marktleider opereert op het gebied van detailhandel. Vanuit ruim tienduizend locaties verkopen zij hun producten aan de klanten. Om diverse data en bedrijfsprocessen van HR, CRM tot inkoop overzichtelijk in beeld te hebben

Bekijk vacature »

DevOps Engineer

Senior DevOps Engineer Opleidingsbudget van € 5.000,- Onze opdrachtgevers werken met de nieuwste technieken dus onze medewerkers ook. Daarom bieden we jou uitgebreide opleidingsmogelijkheden en ondersteunen we je maximaal in je ontwikkeling. We bepalen samen met jou een opleidingstraject want niemand wil stilstaan in zijn ontwikkeling, zeker niet in de IT. Wat mag je nog meer verwachten? Direct een arbeidsovereenkomst voor onbepaalde tijd Een salaris tussen de € 4.000,- en € 4.500,- bruto per maand o.b.v. 40 uur Diverse bonussen: - 1800+ uur bonus - Wervingsbonus, een waardebon naar keus, ter waarde van € 1.500,- netto Een onkostenvergoeding van €

Bekijk vacature »

Experienced Python Developer - Banking

We are looking for Python Developers with experience in Risk Model Management Your day-to-day activities As an experienced Python developer, you will be responsible for designing and developing robust and maintainable systems for our clients so that it can calculate credit risk. You will work in multidisciplinary teams collaborating on run and change processes of risk modeling and management applications. Together you will help design and build a robust, secure cloud environment in Azure. You are comfortable with solving the problems posed by the cloud, such as security, resilience and scaling and help solve the problems posed by the cloud,

Bekijk vacature »

JavaScript Software Ontwikkelaar Front End / Angul

Voor wie je gaat werken: Wij zijn wereldwijd partner voor producten en diensten op het gebied van reiniging en opruimen. Ben je eerder werkzaam geweest als software engineer? Heb je ervaring met met front end software engineering? Vaste baan:JavaScript Software Ontwikkelaar Front End Angular 3.300 - 4.500 Software Engineer Wij ontwikkelen en produceren slimme machines voor de gladheidbestrijding. Hiermee hebben wij een leidende positie op de Europese markt. Het gaat om materieel op het gebied van sneeuwruimen, gladheidbestrijding, straatreiniging en park-/tuintechniek. Wij zijn een veelzijdige organisatie. Je werkt voor onze eigen IT organisatie. We werken met moderne technologie en staan

Bekijk vacature »

BI Developer / Oracle / Internationaal @ Utrecht

2021-08-16 iSense BI Developer Oracle Internationaal Ben jij op zoek naar een dynamische omgeving om als BI Developer aan de slag te gaan? Heb jij goede kennis van Oracle BI, Datawarehouses en Oracle Data Integrator (ODI)? En pas jij dit graag toe in een innovatieve omgeving waar je voldoende uitdaging zult vinden? Reageer dan nu! ISKL48194-2 Organisatie Deze organisatie is internationaal actief binnen de zakelijke dienstverlening en heeft de kwaliteit van de IT afdeling hoog in het vaandel staan. Al vanaf de oprichting, meer dan 30 jaar geleden, heeft de IT afdeling alle systemen in eigen beheer en worden de

Bekijk vacature »

PHP Backend Webdeveloper Lead HBO / Wordpress

Voor wie je gaat werken: Wij zijn een creatief digitaal bureau. Ben jij een Backend Developer? Heb jij ervaring met Laravel? Vaste baan: Backend Developer Webdeveloper HBO Laravel 3.000 - 4.500 Backend Developer Als internetbureau maken wij websites en softwareapplicaties op maat. Ook complexere projecten gaan we niet uit de weg. Wij werken voor MKB klanten. We hebben veel verschillende projecten. Houd jij van afwisseling? Dan zit je bij ons goed! We hebben een bijzondere, open cultuur, waarin er veel ruimte is om het enthousiasme voor wat we doen te delen. Wat wordt er van jou verwacht?: Voor de vacature

Bekijk vacature »

WordPress frontend developer (32-40 uur)

Wij zijn op zoek naar een ontwikkelaar voor het werken aan nieuwe websites. Je zal je vooral bezig houden met frontend ontwikkeling. Hierbij is gedegen kennis van WordPress-templates, CSS en een gevoel voor vormgeving onontbeerlijk. Naast het maken van nieuwe websites onderhoud jij deze websites en applicaties. Groei en resultaat van onze opdrachtgevers kan niet zonder een mooie en goed werkende website. We zijn op zoek naar een ontwikkelaar die veel weet van WordPress, CSS en JavaScript en gevoel heeft voor webdesign. Vind je het leuk om jezelf verder te ontwikkelen in het maken en beheren van WordPress websites? Dan

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

23/09/2021 09:55:44
 
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.