Van sommige functies binnen mijn cms wil ik een beschrijving beschikbaar maken voor de gebruiker. Neem aan dat al deze functies eindigen op "_ding":
Ik probeer al een hele tijd een functie te schrijven die mijn code doorloopt en de _ding-functies eruit plukt. Vervolgens moet de functie kijken in het commentaar van die functie (die staat er altijd direct boven) en alle informatie die achter @user staat eruit vissen. Om de _dingen functies te verzamelen heb ik de volgende functie gemaakt:
Dat werkt goed. Ik krijg een array terug met alle functies die op "_ding" eindigen. Vervolgens ben ik begonnen aan een functie om het commentaar uit te lezen:
Ik heb alleen geen idee hoe ik moet bepalen waar een functie staat en hoe ik dan terug omhoog kan lopen in dat bestand tot ik @user tegenkom. De preg_match is opzich wel goed denk ik, maar voor de rest zit ik vast. Wie kan mij op weg helpen?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| /** * @description Retourneert een foo-bericht naar de gebruiker * @user Met deze functie kunt u mooi dingen doen. * Hele mooie dingen! */ function foo_ding() { return 'foo!'; } /** * @user Deze functie doet iets stoms. Iets heel erg stoms! * @version Retourneert een bar-bericht naar de gebruiker */ function bar_ding() { return 'bar!'; } |
Ik probeer al een hele tijd een functie te schrijven die mijn code doorloopt en de _ding-functies eruit plukt. Vervolgens moet de functie kijken in het commentaar van die functie (die staat er altijd direct boven) en alle informatie die achter @user staat eruit vissen. Om de _dingen functies te verzamelen heb ik de volgende functie gemaakt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| function get_dingen() { $func = get_defined_functions(); $func = $func['user']; foreach ($func as $val) { if (substr($val, -5, 5) == '_ding') { $dingen[] = $val; } } return $dingen; } |
Dat werkt goed. Ik krijg een array terug met alle functies die op "_ding" eindigen. Vervolgens ben ik begonnen aan een functie om het commentaar uit te lezen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| function dingen_info() { foreach (get_dingen() as $ding) { /* Zoek de functie op en ga dan een x aantal regels omhoog * in het bestand totdat je @user tegenkomt. Verzamel de * info achter @user totdat je een andere "@" tegenkomt of * totdat je een * direct gevolgd door een / tegenkomt */ preg_match('/@user(.*)/i', $data, $name); $user = trim($user[1]); $info[$ding] = $user; } return $ding; } |
Ik heb alleen geen idee hoe ik moet bepalen waar een functie staat en hoe ik dan terug omhoog kan lopen in dat bestand tot ik @user tegenkom. De preg_match is opzich wel goed denk ik, maar voor de rest zit ik vast. Wie kan mij op weg helpen?
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."