objecturl-converter
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
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
<?php
/**
* @author Nico Kaag
* @copyright 2009
*/
/**
* @Description Maakt een URL (vanaf het ?) vanuit een Object
* @Param $object : Object() : Het object waaruit de URL moet worden gecreƫrd
* @return : String : een url vanaf het ?
*/
function ObjectToUrl($object) {
// Maak lege array aan om te vullen met de waardes
$array = array();
// Cast het Object naar een Array en loop deze door
foreach ((array)$object as $key => $value) {
// Even de Key waarde opschonen door de klasse naam eruit te halen, en de eerste twee tekens verwijderen.
$key = str_replace(get_class($object), '', $key);
$key = substr($key, 2);
// Voeg gegevens toe aan de array
$array[$key] = $value;
}
// Begincode van de URL
$url = "?";
$i = 0;
// Loop de array
foreach($array as $key => $value) {
// Als er geen waarde is, doen we lekker niks
if (!empty($value)) {
// Als we nog bij de eerste zijn, dan geen & ervoor, want we hebben het ? al
if ($i != 0) {
$url .= '&';
}
$i++;
// Spaties vervangen door underscores
$value = str_replace(' ', '_', $value);
// URL opbouwen, En nog een urlencode over de Value, zodat deze geen erros gaan veroorzaken.
$url .= $key .'='. urlencode($value);
}
}
// Geef de URL terug
return $url;
}
/**
* @Description Maakt van een opgegeven URL een object naar keuze
* @Param $object : Object() : Een instantie van een Object die moet worden gevuld
* @Param $url : String : De url waaruit het object moet worden gemaakt, Gebruik "null" om de algemene "$_GET" te gebruiken
* @Param $useSetter : Boolean : true als er gebruik word gemaakt van setters (standaard), anders false
*/
function UrlToObject($object, $url = null, $useSetter = true) {
// Even een lijst maken met alle variablen in de klasse
$objectVars = getObjectVariables($object);
// Als er geen URL is opgegeven, dan lopen doen wij het gewoon via de GET
if ($url == null) {
// een loop door de Get
foreach ($_GET as $key => $value) {
// Kijken of de variable ook echt in de klasse bestaat
if (in_array($key, $objectVars)) {
// Als er setters worden gebruikt
if ($useSetter) {
// Maak de naam van de set Functie, en roep deze aan, en haal er ook meteen een urldecode overheen
$setMethod = 'set'. ucfirst($key);
$object->$setMethod(urldecode($value));
} else {
// Zet de variable met een url_decode, WERKT NIET MET PRIVATE OF PROTECTED OF STATIC VARIABLEN
$object->$key = urldecode($value);
}
}
}
} else {
// Data opdelen vanaf de vraagteken
$data = explode('?', $url);
// Alles voor het vraagteken uit de array schoppen
array_shift($data);
// De rest van de data doorlopen.
foreach ($data as $item) {
//Opdelen in tussen de &
$item = explode('&', $item);
// Alles doorloopen
foreach ($item as $subItem) {
// verdelen op de =
$subItem = explode('=', $subItem);
// de Key staat voor de =
$key = $subItem[0];
// underscores vervangen door spaties
$value = str_replace('_', ' ', $subItem[1]);
// Kijken of de variable ook echt in de klasse bestaat
if (in_array($key, $objectVars)) {
if ($useSetter) {
// Maak de naam van de set Functie, en roep deze aan, en haal er ook meteen een urldecode overheen
$setMethod = 'set'. ucfirst($key);
$object->$setMethod(urldecode($value));
} else {
// Zet de variable met een url_decode, WERKT NIET MET PRIVATE OF PROTECTED OF STATIC VARIABLEN
$object->$key = urldecode($value);
}
}
}
}
}
// Geef het object terug
return $object;
}
/**
* @Description Maakt een lijst met alle klasse variablen van de opgegeven klasse
* @Param $object : Object() : Het object waarvan de variablen moeten worden gevonden
* @Return : Array() : met alle klasse variablen
*/
function getObjectVariables($object) {
// Maak array aan om te vullen en te returnen
$array = array();
// Cast Object naar een array en loop hem door, Waarbij Key de variable naam is, met de klassenaam tussen 2 onbekende tekens ervoor
foreach ((array)$object as $key => $value) {
// Vervang de Klasse naam met niks, en verwijder de eerste 2 karakters.
$key = str_replace(get_class($object), '', $key);
$key = substr($key, 2);
// Voeg de variable naam toe aan de Array
$array[] = $key;
}
// Geef de array terug
return $array;
}
?>
/**
* @author Nico Kaag
* @copyright 2009
*/
/**
* @Description Maakt een URL (vanaf het ?) vanuit een Object
* @Param $object : Object() : Het object waaruit de URL moet worden gecreƫrd
* @return : String : een url vanaf het ?
*/
function ObjectToUrl($object) {
// Maak lege array aan om te vullen met de waardes
$array = array();
// Cast het Object naar een Array en loop deze door
foreach ((array)$object as $key => $value) {
// Even de Key waarde opschonen door de klasse naam eruit te halen, en de eerste twee tekens verwijderen.
$key = str_replace(get_class($object), '', $key);
$key = substr($key, 2);
// Voeg gegevens toe aan de array
$array[$key] = $value;
}
// Begincode van de URL
$url = "?";
$i = 0;
// Loop de array
foreach($array as $key => $value) {
// Als er geen waarde is, doen we lekker niks
if (!empty($value)) {
// Als we nog bij de eerste zijn, dan geen & ervoor, want we hebben het ? al
if ($i != 0) {
$url .= '&';
}
$i++;
// Spaties vervangen door underscores
$value = str_replace(' ', '_', $value);
// URL opbouwen, En nog een urlencode over de Value, zodat deze geen erros gaan veroorzaken.
$url .= $key .'='. urlencode($value);
}
}
// Geef de URL terug
return $url;
}
/**
* @Description Maakt van een opgegeven URL een object naar keuze
* @Param $object : Object() : Een instantie van een Object die moet worden gevuld
* @Param $url : String : De url waaruit het object moet worden gemaakt, Gebruik "null" om de algemene "$_GET" te gebruiken
* @Param $useSetter : Boolean : true als er gebruik word gemaakt van setters (standaard), anders false
*/
function UrlToObject($object, $url = null, $useSetter = true) {
// Even een lijst maken met alle variablen in de klasse
$objectVars = getObjectVariables($object);
// Als er geen URL is opgegeven, dan lopen doen wij het gewoon via de GET
if ($url == null) {
// een loop door de Get
foreach ($_GET as $key => $value) {
// Kijken of de variable ook echt in de klasse bestaat
if (in_array($key, $objectVars)) {
// Als er setters worden gebruikt
if ($useSetter) {
// Maak de naam van de set Functie, en roep deze aan, en haal er ook meteen een urldecode overheen
$setMethod = 'set'. ucfirst($key);
$object->$setMethod(urldecode($value));
} else {
// Zet de variable met een url_decode, WERKT NIET MET PRIVATE OF PROTECTED OF STATIC VARIABLEN
$object->$key = urldecode($value);
}
}
}
} else {
// Data opdelen vanaf de vraagteken
$data = explode('?', $url);
// Alles voor het vraagteken uit de array schoppen
array_shift($data);
// De rest van de data doorlopen.
foreach ($data as $item) {
//Opdelen in tussen de &
$item = explode('&', $item);
// Alles doorloopen
foreach ($item as $subItem) {
// verdelen op de =
$subItem = explode('=', $subItem);
// de Key staat voor de =
$key = $subItem[0];
// underscores vervangen door spaties
$value = str_replace('_', ' ', $subItem[1]);
// Kijken of de variable ook echt in de klasse bestaat
if (in_array($key, $objectVars)) {
if ($useSetter) {
// Maak de naam van de set Functie, en roep deze aan, en haal er ook meteen een urldecode overheen
$setMethod = 'set'. ucfirst($key);
$object->$setMethod(urldecode($value));
} else {
// Zet de variable met een url_decode, WERKT NIET MET PRIVATE OF PROTECTED OF STATIC VARIABLEN
$object->$key = urldecode($value);
}
}
}
}
}
// Geef het object terug
return $object;
}
/**
* @Description Maakt een lijst met alle klasse variablen van de opgegeven klasse
* @Param $object : Object() : Het object waarvan de variablen moeten worden gevonden
* @Return : Array() : met alle klasse variablen
*/
function getObjectVariables($object) {
// Maak array aan om te vullen en te returnen
$array = array();
// Cast Object naar een array en loop hem door, Waarbij Key de variable naam is, met de klassenaam tussen 2 onbekende tekens ervoor
foreach ((array)$object as $key => $value) {
// Vervang de Klasse naam met niks, en verwijder de eerste 2 karakters.
$key = str_replace(get_class($object), '', $key);
$key = substr($key, 2);
// Voeg de variable naam toe aan de Array
$array[] = $key;
}
// Geef de array terug
return $array;
}
?>