Ter afsluiting de code
De index.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
require 'lib/class.UrlDispatcher.php';
$url = new UrlDispatcher();
echo '<p>De eerste node is: '.$url->getFirstNode().'</p>';
echo '<p>De laatste node is: '.$url->getLastNode().'</p>';
$counter = 1;
foreach($url->getNodes() as $node)
{
echo '<p>Node nummer:'.$counter.' met waarde: '.$node.'</p>';
$counter++;
}
?>
require 'lib/class.UrlDispatcher.php';
$url = new UrlDispatcher();
echo '<p>De eerste node is: '.$url->getFirstNode().'</p>';
echo '<p>De laatste node is: '.$url->getLastNode().'</p>';
$counter = 1;
foreach($url->getNodes() as $node)
{
echo '<p>Node nummer:'.$counter.' met waarde: '.$node.'</p>';
$counter++;
}
?>
De klasse UrlDispatcher ( inclusief de optionele parameters. Zie ook dat ik de dynamische nodes method NIET aanroep. Dit kun je doen door $this->createNummericNodes();
class.UrlDispatcher.php
Code (php)
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<?php
class UrlDispatcher
{
private $uri;
private $nodes;
private $firstNode;
private $lastNode;
private $root;
// optioneel
private $node1;
private $node2;
private $node3;
private $node4;
private $node5;
public function UrlDispatcher ()
{
// body van de constructor
$index = strrpos( $_SERVER['PHP_SELF'] , "index.php");
$root = substr( $_SERVER['PHP_SELF'] , -0 , $index );
// Stel de instantie variabele van root in
$this->setRoot($root);
// Vervang de root met de huidige URI
$argument = str_replace( $this->getRoot() , "" ,$_SERVER['REQUEST_URI'] );
// Maak een URI string, en strip de laatste /
$this->setUri(trim($argument, "/"));
// Zorg ervoor dat alle nodes in een array komen
// de String die we gebruiken halen we op door de method getUri()
$this->setNodes(explode("/", $this->getUri()));
// Nu alles verder afgehandeld is, kunnen we de eerste en laatste node ophalen
$this->createNodes();
// ######## OPTIONEEL ##########
// $this->createNummericNodes();
}
/**
* Vind de eerste en laatste URI
*/
public function createNodes ()
{
// sla alle nodes op in een lokale variabele
$nodes = $this->getNodes();
// Controleer of $nodes een eerste rij heeft ( een array begint met 0 )
if(isset($nodes[0]))
{
// Deze is nog vrij makkelijk, als er een rij is op 0, is dat onze eerste node
$this->setFirstNode($nodes[0]);
}
// Gooi de array over de kop, eerste wordt laatste en vice versa
$reversedNodes = array_reverse($nodes);
// Lijkt raar, maar nu hebben we ook de laatste node.
// Als er maar 1 URI string is opgegeven, krijg je dus hetzelfde resultaat als de eerste
$this->setLastNode($reversedNodes[0]);
}
/**
* Optionele method om gewoon alle nodes te nummeren en in de instantie variabelen te zetten
*/
public function createNummericNodes ()
{
// sla alle nodes op in een lokale variabele
$nodes = $this->getNodes();
// Als die geset is, en $nodes[0] is aanwezig
if(isset($nodes[0]))
{
// Lokale variabelen
$string = "node";
$counter = 1;
foreach($nodes as $node)
{
// Creer de naam voor de instantie variabele door "node" en het huidige nummer aan elkaar
// te plakken. Deze kun je vervolgens door $$ te gebruiken, als nieuwe naam voor je
// variabele opgeven
$tmp_name = $string.$counter;
$this->$tmp_name = $node;
// Werk de counter bij, tel er 1 bij op
$counter++;
}
}
}
/**
* Haal de huidige URI op
* @return String complete URI string
*/
public function getUri ()
{
return $this->uri;
}
/**
* Haal alle nodes op
* @return Array Alle nodes
*/
public function getNodes ()
{
return $this->nodes;
}
/**
* Haal de eerste node op
* @return String eerste node
*/
public function getFirstNode ()
{
return $this->firstNode;
}
/**
* Haal de laatste node op
* @return String laatste node
*/
public function getLastNode ()
{
return $this->lastNode;
}
/**
* Haal de root van de server op
* @return String root ( de plek waarvandaan je werkt )
*/
public function getRoot ()
{
return $this->root;
}
/**
* Stel de huidige URI in
* @param String de complete URI string
*/
private function setUri ($uri)
{
$this->uri = $uri;
}
/**
* Sla elk segment van de URI op in een array
* @param Array array met alle nodes
*/
private function setNodes ($array)
{
$this->nodes = $array;
}
/**
* Stel de eerste URI node in
* @param String eerste node
*/
private function setFirstNode ($node)
{
$this->firstNode = $node;
}
/**
* Stel de laatste URI node in
* @param String laatste node
*/
private function setLastNode ($node)
{
$this->lastNode = $node;
}
/**
* Geef de root van de server op
* @param String ( welke blanco moet worden, tenzij het om een map gaat
*/
private function setRoot ($root)
{
$this->root = $root;
}
}
?>
class UrlDispatcher
{
private $uri;
private $nodes;
private $firstNode;
private $lastNode;
private $root;
// optioneel
private $node1;
private $node2;
private $node3;
private $node4;
private $node5;
public function UrlDispatcher ()
{
// body van de constructor
$index = strrpos( $_SERVER['PHP_SELF'] , "index.php");
$root = substr( $_SERVER['PHP_SELF'] , -0 , $index );
// Stel de instantie variabele van root in
$this->setRoot($root);
// Vervang de root met de huidige URI
$argument = str_replace( $this->getRoot() , "" ,$_SERVER['REQUEST_URI'] );
// Maak een URI string, en strip de laatste /
$this->setUri(trim($argument, "/"));
// Zorg ervoor dat alle nodes in een array komen
// de String die we gebruiken halen we op door de method getUri()
$this->setNodes(explode("/", $this->getUri()));
// Nu alles verder afgehandeld is, kunnen we de eerste en laatste node ophalen
$this->createNodes();
// ######## OPTIONEEL ##########
// $this->createNummericNodes();
}
/**
* Vind de eerste en laatste URI
*/
public function createNodes ()
{
// sla alle nodes op in een lokale variabele
$nodes = $this->getNodes();
// Controleer of $nodes een eerste rij heeft ( een array begint met 0 )
if(isset($nodes[0]))
{
// Deze is nog vrij makkelijk, als er een rij is op 0, is dat onze eerste node
$this->setFirstNode($nodes[0]);
}
// Gooi de array over de kop, eerste wordt laatste en vice versa
$reversedNodes = array_reverse($nodes);
// Lijkt raar, maar nu hebben we ook de laatste node.
// Als er maar 1 URI string is opgegeven, krijg je dus hetzelfde resultaat als de eerste
$this->setLastNode($reversedNodes[0]);
}
/**
* Optionele method om gewoon alle nodes te nummeren en in de instantie variabelen te zetten
*/
public function createNummericNodes ()
{
// sla alle nodes op in een lokale variabele
$nodes = $this->getNodes();
// Als die geset is, en $nodes[0] is aanwezig
if(isset($nodes[0]))
{
// Lokale variabelen
$string = "node";
$counter = 1;
foreach($nodes as $node)
{
// Creer de naam voor de instantie variabele door "node" en het huidige nummer aan elkaar
// te plakken. Deze kun je vervolgens door $$ te gebruiken, als nieuwe naam voor je
// variabele opgeven
$tmp_name = $string.$counter;
$this->$tmp_name = $node;
// Werk de counter bij, tel er 1 bij op
$counter++;
}
}
}
/**
* Haal de huidige URI op
* @return String complete URI string
*/
public function getUri ()
{
return $this->uri;
}
/**
* Haal alle nodes op
* @return Array Alle nodes
*/
public function getNodes ()
{
return $this->nodes;
}
/**
* Haal de eerste node op
* @return String eerste node
*/
public function getFirstNode ()
{
return $this->firstNode;
}
/**
* Haal de laatste node op
* @return String laatste node
*/
public function getLastNode ()
{
return $this->lastNode;
}
/**
* Haal de root van de server op
* @return String root ( de plek waarvandaan je werkt )
*/
public function getRoot ()
{
return $this->root;
}
/**
* Stel de huidige URI in
* @param String de complete URI string
*/
private function setUri ($uri)
{
$this->uri = $uri;
}
/**
* Sla elk segment van de URI op in een array
* @param Array array met alle nodes
*/
private function setNodes ($array)
{
$this->nodes = $array;
}
/**
* Stel de eerste URI node in
* @param String eerste node
*/
private function setFirstNode ($node)
{
$this->firstNode = $node;
}
/**
* Stel de laatste URI node in
* @param String laatste node
*/
private function setLastNode ($node)
{
$this->lastNode = $node;
}
/**
* Geef de root van de server op
* @param String ( welke blanco moet worden, tenzij het om een map gaat
*/
private function setRoot ($root)
{
$this->root = $root;
}
}
?>
Inhoudsopgave
- HTACCES gebruiken
- De index.php maken
- De URL class schrijven
- De URL class af maken
- Ter afsluiting de code