[OOP] Juiste opzet?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Java developer

Dit ga je doen Jouw taken als Senior Java Developer zijn: Het maken van strategische keuzes omtrent de nieuwbouw van applicaties; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java FX, JDBC, SQL, REST, Jax-RS, JSON, Maven, JUnit en Spring (boot)); Reviewen van code en feedback geven op collega developers; Analyseren en oplossen van bugs/incidenten door het onderlinge verband te kunnen leggen van verschillende losstaande systemen. Hier ga je werken Het bedrijf waar je als Senior Java Developer komt te werken staat internationaal bekend om het testen van bodemstructuren door middel van echotechnieken en beeldherkenning.

Bekijk vacature »

Oracle APEX Ontwikkelaar (3.500-6.000 euro)

Bedrijfsomschrijving Ben jij een getalenteerde Oracle APEX ontwikkelaar met minimaal één jaar ervaring in het ontwikkelen van Oracle APEX-applicaties? Ben je gepassioneerd over het ontwikkelen van bedrijfskritische oplossingen en wil je werken bij een toonaangevend consultancybedrijf? Dan zijn wij op zoek naar jou! Deze organisatie beschikt over zowel inhouse als externe projecten, maar bovenal over een sterk team en netwerk van opdrachten waardoor jij jezelf verder kunt ontwikkelen. Het team bestaat uit een aantal junior en medior developers, maar vooral uit senioren. De business unit managers binnen het team zijn mensen die hun vak verstaan en zelf als Oracle APEX

Bekijk vacature »

Python (Django) developer - Remote in The Netherla

Functie Together with your team, consisting of a senior, 2 mediors and one junior developer, you will work on their software in an Agile-based approach. You have an eye for quality, risk, and customer interest. Communication with your colleagues and, where necessary, with customers, plays an important role in achieving a successful result. As a person, you are smart, get things done, and are result-oriented. There is a lot of independence within the development team, apart from the stand-up (10:00 am) and occasional pair-programming sessions. Techniques they use include Python, Django, MySQL, Mercurial, Ubuntu Linux, Nginx. In terms of front-end

Bekijk vacature »

Senior java ontwikkelaar integratie

Functieomschrijving Voor de gemeente Rotterdam zijn wij op zoek naar een senior java ontwikkelaar integratie. Taken Binnen een zelfsturend Scrumteam voer je geheel zelfstanding je opdrachten uit en levert het eindresultaat op aan het Integratieteam. Jij voelt je net als alle teamleden verantwoordelijk voor alle aspecten, vanaf de vraag tot en met de oplevering in productie. Je bent kritisch, je helpt de klant om zijn wensen helder te krijgen, je schrijft zelfstandig clean code die van hoge kwaliteit is, met bijbehorende unit- en integratietesten, je ondersteunt zo nodig bij deployments naar productie. Het Integratieteam bouwt componenten (Endpoints) op de ESB.

Bekijk vacature »

C# .NET Backend Developer HBO Javascript

Samengevat: Deze werkgever is een professionele speler op gebied van IT en E-Commerce. Wil jij werken voor een e-commerce platform? Heb je ervaring met C#, Javascript en Scrum? Vaste baan: C# .NET Developer Backend E-Commerce 3.400 - 4.500 Backend Developer Wij ontwikkelen software voor E-Commerce toepassingen. Ons eigen Content Management systeem biedt een integrale oplossing met diverse ERP software. Onze systemen zijn vaak complex en omvangrijk en draaien bij grote organisaties. Maar ook kleine ondernemingen hebben steeds vaker behoefte aan een vlekkeloos werkende E-Commerce oplossing. Zij bieden een uitdagende werkomgeving met gezellige collega's. Je krijgt veel vrijheid en er is

Bekijk vacature »

Medior PHP developer

Functie Samen met je development team werk je Agile Scrum en met jullie gezamenlijke kennis en ervaring bepalen jullie samen de beste keuze voor techniek en architectuur. Naast het ontwikkelen van software ben je continue bezig om ook jezelf te ontwikkelen. Ze werken met o.a.: PHP, Laravel, Doctrine, PHP Unit, Behat, React, TypeScript, (My)SQL, Postgress, Redis, ElasticSearch, Docker, Nginx, GIT flow, JIRA, AWS. Eisen • HBO werk- en denkniveau • Je hebt goede kennis en ervaring met PHP • Je bent niet bang voor complexe projecten • Je werkt graag zelfstandig aan applicaties • Je bent altijd nieuwsgierig naar nieuwe

Bekijk vacature »

PHP Developer

Functieomschrijving Wij zijn op zoek naar een PHP Developer met Laravel ervaring! Voor een groeiende werkgever in regio Breda zijn wij op zoek naar een medior PHP developer met Laravel ervaring. Je gaat aan de slag met het ontwikkelen van maatwerk software voor klanten in een specifieke markt. Als PHP developer ben je samen met een gemotiveerd team van 6 collega’s verantwoordelijk voor de ontwikkeling, beheer en het innoveren van informatiesystemen voor klanten in een specifieke branche. Als software developer ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Om

Bekijk vacature »

Medior PHP Developer

Functie omschrijving Ben jij een getalenteerde PHP Developer en aan de slag in een gemotiveerd team? Lees dan snel verder! Voor onze opdrachtgever in de omgeving van Valkenswaard zijn we op zoek naar een ervaren PHP developer. Jij gaat hier zorg dragen voor het optimaliseren en up-to-date houden van de bestaande applicaties. Je werkt verder aan de applicaties die jij verder ontwikkelt. Dit doe je voornamelijk met PHP en MySQL. Verder ga je je bezig houden met: Het uitbouwen van het E-commerce software platform. Deelnemen aan overleggen met het team. Het ondersteunen van jouw team developers (3 man) en helpen

Bekijk vacature »

Webshop beheerder / Fullstack developer

Functie omschrijving Wij zijn op zoek naar een full stack developer die zich bezig gaat houden met het uitbreiden en verbeteren van de online webshop. Een onderdeel van jouw werkzaamheden is naast het beheren van de webshop ook om de processen en structuren te stroomlijnen. Ben jij een leergierige en ambitieuze junior developer met technische skills? Ben jij op zoek naar een werkgever die jouw de volledige vrijheid geeft om jezelf tot een volwaardige senior te ontwikkelen? Lees dan snel verder! Werkzaamheden Onderhouden van de webshop (denk aan het bijhouden van de voorraad); Nieuwe functies toevoegen aan de product configurator

Bekijk vacature »

Lead Webdeveloper

As Lead Web Developer at KUBUS you are responsible for the implementation design of requirements and the software architecture of the web application and services of BIMcollab. In your role as lead developer you will naturally search for the optimum between the required implementation time, the performance of the application and a fast go-to-market of features, in line with our automated test and release train. Together with the other senior developers in your team you monitor the architecture of the application and you advise the product owner about necessary refactoring to improve the maintainability of the platform. Our development team

Bekijk vacature »

.NET Software Developer

Dit ga je doen Als .NET Software Developer zul jij je voornamelijk bezig houden met: Het van scratch af aan bouwen van applicaties (.NET, C#, Bootstrap, KnockoutJs en WebAPI2); Het testen van jouw code d.m.v. het uitvoeren van unittesten; Het oplossen van bugs in de code; Het onderhouden van contact met collega's betreffende de door jouw ontwikkelde applicaties; Het verbeteren en doorontwikkelen van maatwerkapplicaties. Hier ga je werken Jij gaat aan de slag als .NET Software Developer en gaat je focussen op het bedenken, ontwikkelen en testen van maatwerkapplicaties in voornamelijk C#. Dit ga je doen bij een grote, internationale

Bekijk vacature »

Senior Front end developer Angular

Functie Er zijn momenteel 5 SCRUM-teams waarvan drie gefocust zijn op DevOps en de huidige projecten en twee op innovatie van de platformen. Jij zal onderdeel worden van het innovatie Scrum team. De 2 multidisciplinaire innovatie teams bestaan momenteel uit 14 werknemers. Jij als senior Front end developer wordt onderdeel van onze innovatieteams. De innovatieteams houden zich bezig met het door ontwikkelen van de huidige producten en denken na over nieuwe functionaliteiten. Binnen de rol van Front end developer krijg je veel vrijheid en kan je je dag zelf indelen. Dingen waar jij je dagelijks mee bezig zult houden is

Bekijk vacature »

Junior Front end developer Onderwijssoftware

Functie Als Junior front end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van

Bekijk vacature »

SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Veldhoven Vacature ID: 13382 Introductie We is looking for a HANA Developer to work for our client. The candidate has to have an experience in building Data Intensive Applications (DIA’s). The role of a HANA Developer at ASML involves working on building Data Intensive Applications in an industrial/enterprise environment. The primary responsibility is to handle data from various sources and determine the best way to structure it for use by data analysts, who will run queries and algorithms against it for predictive and prescriptive analytics through machine learning. Wat verwachten we van jou?

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Dordrecht zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig 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

23/11/2024 23:48:09
 
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.