[OOP] Juiste opzet?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Traineeship Front-end developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

Bekijk vacature »

.NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving Voor de gemeente Amsterdam zijn wij op zoek naar een softwareontwikkelaar Cleopatra. De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van brom- en snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie. Functie

Bekijk vacature »

Senior Front end developer Digital Agency

Functie Jij als Front end developer komt te werken in een van de 8 multidisciplinaire teams binnen de organisatie. Deze teams werken op basis van Scrum agile in 2 wekelijkse sprints. De grootte van de teams varieert van 9-14 collega’s en bestaan altijd uit één of meerdere project managers en een project manager. Samen met je team werk je aan verschillende projecten voor uiteenlopende klanten zoals grote multinationals tot het kleine mkb. De stack waarmee gewerkt wordt is voornamelijk Javascript, ES6, Es.next, HTML, CSS, React.js en Node.js. Wat deze organisatie onderscheid is dat ze echt langdurige partnerships aangaan met hun

Bekijk vacature »

C++ Developer

Functieomschrijving Ben jij als software engineer toe aan een nieuwe uitdaging? Dan zijn wij op zoek naar jou! Voor het maken van de procesbesturingsoftware gebruiken onze projectteams een in C++ en C# geschreven tool. Dit is een gedistribueerd object framework wat alle kernfuncties biedt voor een procesautomatisering. Verder zullen jouw werkzaamheden o.a. bestaan uit: Analyseren van vragen en wensen van gebruikers en deze vertalen naar een functioneel ontwerp; Ontwerpen, programmeren en testen van productaanpassingen; Implementeren van nieuwe productreleases in de projectteams; Continu toetsen van het effect van nieuwe releases op andere tools en processen; Inzichtelijk maken van voortgang omtrent softwarewerkzaamheden,

Bekijk vacature »

Fullstack developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie werken? Voor een mooi softwarebedrijf in omgeving Alblasserdam zijn wij op zoek naar versterking op de afdeling Software Development! Als Fullstack react.js developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! 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 de back

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Lead C++ Developer

The role of Lead C++ Developer As Lead C++ Developer at KUBUS you will be responsible for the implementation design of requirements and the software architecture of the desktop applications of BIMcollab, our platform for 3D model validation and issue management aimed at improving the quality of 3D building design models. Better 3D models lead to better buildings, thus contributing to the sustainability of the built environment with smarter use of materials, less waste and energy-efficient buildings. A good user experience is of paramount importance to us; we go for innovation and quality in our development. In your role as

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

Productontwikkelaar Food

Wat ga je doen Als Productontwikkelaar Food ga je nieuwe producten ontwikkelen en bestaande producten verbeteren. Je bent hierbij betrokken bij het gehele proces: van productconcept naar proefreceptuur, het realiseren va het product (op kleine schaal) en het testen van producten in een productieomgeving. Verder: Bewaak je de status van verschillende fases van productontwikkeling en lever je tijdig de benodigde data aan Ben je bezig met de optimalisatie van oude en nieuwe recepturen Begeleid of organiseer je proefsessies (sensorisch onderzoek) in het team en/of bij klanten Onderhoud je contacten met de klanten, leveranciers van grondstoffen e.a. externe partijen Houd je

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 Gorinchem zijn wij op zoek naar versterking. 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 de back end werken! Bedrijfsprofiel Onze

Bekijk vacature »

APEX Ontwikkelaar in een team van Oracle Developer

Bedrijfsomschrijving Wij zijn op zoek naar een APEX Ontwikkelaar om onze opdrachtgever in Den Haag te versterken. In deze rol zul je verantwoordelijk zijn voor het ontwikkelen en onderhouden van de front-end van onze applicaties met behulp van Oracle Application Express (APEX). Je werkt aan zowel inhouse als externe projecten. De sfeer binnen het Oracle team is gemoedelijk en men probeert elkaar te helpen én van elkaar te leren. Zo ontstaat er een prettige en plezierige werksfeer waar ruimte is voor persoonlijke ontwikkeling en groei. Er wordt gewerkt met de meest nieuwe technologieën waardoor je kennis up-to-date blijft. Het bedrijf

Bekijk vacature »

Low code Developer

Dit ga je doen Je richt je op het doorontwikkelen van bestaande applicaties en het geheel van scratch af aan opzetten van nieuwe applicaties binnen een low code platform; Je beoordeelt technisch ontwerpen en maakt de vertaalslag naar de technische oplossingen binnen het platform; Je voert testwerkzaamheden uit; Je adviseert de organisatie op jouw vakgebied; Je schakelt met business analisten en de architect om tot mooie oplossingen te komen; Je lost bugs op en denkt mee over een structurele oplossing. Hier ga je werken Het gaat om een bekend internationaal handelsbedrijf met ruim 800 medewerkers, verdeeld over verschillende deelbedrijven. Deze

Bekijk vacature »

Front end developer

Functie Jij als front end developer gaat werken binnen de teams van onze klant, uiteraard met alle moderne technieken. Opdrachten worden echt gericht op jouw leerdoelen en jouw behoeftes. Wij hebben een omgeving gecreëerd waarin je echt jezelf kan zijn en waar echt gekeken wordt naar jouw voorkeuren. Maak je een fout? Geen probleem, leer ervan en dan ga weer door. Door de variëteit aan werk kun je in verschillende omgevingen een kijkje nemen en dus jezelf snel ontwikkelen. Eisen Je bent communicatief vaardig en houdt van een dynamische omgeving Je hebt HBO werk- en denkniveau Je hebt gedegen kennis

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

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

27/07/2024 06:55:01
 
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.