php functies -> eigen functies?
Ik zit me zomaar eens iets af te vragen... een hersenspinsel.
PHP heeft best rare functiebenamingen die niet altijd even consistent zijn, denk bijv. aan str_replace en strlen. Of was het nou strreplace en str_len?
Toen vroeg ik me zojuist ineens af... wat nu als je hier zelf functie voor maakt met je eigen handige benaming:
string_length()
string_replace()
enz.
In die functies gebruik je dan de PHP functies, maar je hoeft je nooit meer af te vragen wat de juiste naam van de functie is.
Ander voorbeeld:
eregi en preg_match
De eerste is verouderd en moet vervangen worden door de 2e. Maar wat nu als je zelf een functie had geschreven, bijv. pattern_match().
Dan had je alleen die ene functie hoeven aan te passen in plaats van je completen project door te spitten.
En zo zijn er legio voorbeelden te noemen.
Heel stiekem lijkt het me best handig om je eigen functies te gebruiken. Ik kan sowieso één nadeel bedenken. Stel dat andere programmeurs aan jouw project werken dan kennen ze de "nieuwe" functies niet. En het tweede, maar daar ben ik wel heel benieuwd naar... zou het (significant / meetbaar) vertragend werken??? Stel dat je bestaande functies vervangt door je eigen functies, zou alles dan ineens een stuk trager worden?
Zo maar even een hersenspinsel, maar ik ben wel benieuwd naar jullie meningen!
Het aanbrengen van zelfgefabriceerde alias-functies kan je doen, maar vind ik overbodig vanwege de 'function auto-complete` in de meeste editors, in een team kan het gebruik van aliassen voor verwarring leiden.
Waar ik vooral benieuwd naar ben, is of het vertragend werkt en dus ten koste gaat van de performance van je website. Of zou dat te verwaarlozen zijn?
Vooral de overdraagbaarheid van je code zie ik wel als een probleem.
Gewoon veel programmeren en je leert vanzelf uit je hoofd hoe elke functie heet :p
@TJVB, ja dat is ook zo... en van de meeste weet je het ook wel. Maar van de andere kant lijkt het me wel handig om gewoon duidelijke, heldere consistente functienamen te kunnen gebruiken. Maar denk jij dat dat een merkbaar snelheidsverlief oplevert?
Je kunt ook een framework gebruiken, daar zitten vaak ook veel helpers in die aan het framework standaard voldoen.
Thanks Kees, maar zou het een merkbaar snelheidsverschil opleveren. Daar ben ik zo benieuwd naar!
Probeer het maar eens te benchmarken.
Roep voor de grap eens 1000 keer een simpele functie aan, en meet de tijd, en doe dit ook bij een dergelijke alias.
0.0011920928955078
0.0013911724090576
0.0013656616210938
0.0012428760528564
Als ik het dus goed begrijp scheelt het op 10.000 functie-aanroepen slechts 0,0013 seconde? Begrijp ik het zo goed? (En stel nu dat ik bijv. van 100 functies eigen varianten maak, kost het dan nog extra tijd om die functies in te lezen, of is dat ook verwaarloosbaar?)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function test() {
echo strtolower('TEST TEST TEST TEST');
}
$a = microtime(true);
for ($i = 1; $i < 10000; $i++) {
echo strtolower('TEST TEST TEST TEST');
}
$b = microtime(true);
for ($i = 1; $i < 10000; $i++) {
test();
}
$c = microtime(true);
$d = $b - $a;
$e = $c - $b;
$f = $e - $d;
echo '<br /><br />';
echo $f;
?>
function test() {
echo strtolower('TEST TEST TEST TEST');
}
$a = microtime(true);
for ($i = 1; $i < 10000; $i++) {
echo strtolower('TEST TEST TEST TEST');
}
$b = microtime(true);
for ($i = 1; $i < 10000; $i++) {
test();
}
$c = microtime(true);
$d = $b - $a;
$e = $c - $b;
$f = $e - $d;
echo '<br /><br />';
echo $f;
?>
Gewijzigd op 11/10/2012 11:54:26 door Ozzie PHP