fx. en række ting jeg gerne vil gøre flere gange inde i fisk() men noget som ikke relevant udenfor fisk()
helt konkret der hvor jeg stødte på fejlen er det en række sql-ting som er relevante for noget statistikberegning. en ting som ikke kan bruges til noget som helst udenfor.
=)
Synes godt om
Slettet bruger
16. juli 2004 - 00:46#3
Bare et gæt, men prøv at er klære funktionen static, altså:
class dyr { function fisk() { static function laks() { return "mums!"; } echo laks(); } }
jeg kan ikke se nogen grund til at resten af min kode skal have adgang til en funktion som kun kan bruges til det ene specifikke formål i denne statistikfonktion.
der er fx. ingen grund til at mit billedmodul regner på hvor mange besøgende der har været mellem tid x og tid y.
ikke at det er noget problem for mig at rykke den ud og gøre den private/protected, men jeg synes bare det er underligt at man ikke kan gøre det længere, for der er - i mine øjne - en vis logik i at kunne gøre det.
nå, pyt. jeg siger tak for ordudvekslingen. lader den lige stå for en stund i tilfælde af at sandbox også føler sig berettiget til nogle point. så kan i dele. ellers får du dem, coderdk.
Ok :) Faktisk var jeg slet ikke klar over at underfunktioner ikke virkede i php5... Jeg bruger dem også et par steder - men kun til småfunktioner som jeg ikke klar lavet i klasser...
Hmm ja det lyder lidt suspekt. For mig lyder det som en bug. Enten burde det ikke virke nogen steder, eller også burde det virke alle steder ;) Man kan selvfølgelig argumentere for at funtioner er funktioner, og objekter/klasser/metoder er anderledes...
Eksempel 12.3 i http://dk.php.net/manual/en/language.functions.php viser lidt om at funktoiner i funktioner ikke fungerer som du regner med. Læg mærke til at bar() ikke kun er kendt i foo(). I en klasse opnår du derfor ikke noget yderligere "beskyttelse" ved at definere en funktion i en funktion ud fra denne filosofi. Man kan slet ikke gøre sådan i Java, som PHP5 læner sig meget op af, og øjensynligt heller ikke her. Om det ligefrem er en bug, skal jeg ikke kunne sige, men man plejer blot at lade sådan en hjælpefunktion være 'private' ved siden af.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.