[PHP] Functie binnen functie: Cannot redeclare

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Ik loop tegen een probleem aan waar ik geen oplossing voor kan vinden. Ik heb 2 functies (worden er later meer) met daarin verschillende functies. Deze onderliggende functies hebben dezelfde naam als de onderliggende functies binnen de overige parent functies.

Een voorbeeld om het wat duidelijker te maken:
2 functies; test1 en test2 (worden er later meer) met beide daarin de functie: hallo().
De naam hallo() komt voor in de functies test1, test2, test3, etc.

Het probleem waar ik nu tegen aanloop is de foutmelding: Fatal error: Cannot redeclare hallo() (previously declared in test.php:7) in test.php on line 6. Logisch, want ik kan hallo() uiteraard maar 1x aanmaken en ik roep de functie test1 2x aan.

Een eventuele oplossing is om de functie hallo() uit de functie test1 en test2 te halen. Dit kan dus niet, omdat de functie hallo() verschillende uitkomsten genereren, maar toch dezelfde naam moeten behouden.

Graag hulp wat te doen!

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function test1($nummer) {
    function hallo($nummer) {
        echo $nummer."<br>";
    }
    hallo($nummer);
}

function test2($nummer) {
    function hallo($nummer) {
        echo $nummer."<br>";
    }
    hallo($nummer);
}

test1('1');
test1('2');

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Functies in functies? Waarom maak je er geen classes van ?

Acties:
  • 0 Henk 'm!

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 15-08 22:46

KompjoeFriek

Statsidioot

Even zonder in te gaan op het nut van subfuncties:

Wat is er op tegen om de subfuncties hallo1() en hallo2() (of zoals in het code voorbeeld: boe1() en boe2() ) te noemen?

Daarnaast zal $nummer niet bekend zijn binnen de scope van de subfunctie :)

WhatPulse! - Rosetta@Home - Docking@Home


Acties:
  • 0 Henk 'm!

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Cartman! schreef op woensdag 27 juni 2012 @ 15:17:
Functies in functies? Waarom maak je er geen classes van ?
Ik heb er al even naar gekeken, maar wordt daar totaal niet wijzer van. Ik heb 0,0 ervaring met OOP.

Acties:
  • 0 Henk 'm!

  • ieperlingetje
  • Registratie: September 2007
  • Niet online
jouw 'probleem' is net de reden waarom men OOP gebruikt ;)

Tijdmachine | Nieuws trends


Acties:
  • 0 Henk 'm!

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
KompjoeFriek schreef op woensdag 27 juni 2012 @ 15:17:
Even zonder in te gaan op het nut van subfuncties:

Wat is er op tegen om de subfuncties hallo1() en hallo2() (of zoals in het code voorbeeld: boe1() en boe2() ) te noemen?

Daarnaast zal $nummer niet bekend zijn binnen de scope van de subfunctie :)
$nummer wordt uiteraard doorgegeven, maar vergeten in de code..zal het even aanpassen :)

De reden waarom ik hallo() geen andere naam kan geven is doordat ik een overkoepelende functie gebruik die a.d.h.v. $nummer de juiste functie ( hallo(), of andere functies ) start.

[ Voor 16% gewijzigd door DeepFreeze.NL op 27-06-2012 15:23 ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Of OOP, of anonymous functions is de oplossing. Naamgeving met nummering is enkel een snelle hack waar je jarenlang plezierhaat van kan hebben.

{signature}


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Hoog tijd om het te leren dan, het ziet er naar uit dat je het echt nodig hebt.

Acties:
  • 0 Henk 'm!

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Cartman! schreef op woensdag 27 juni 2012 @ 15:39:
[...]

Hoog tijd om het te leren dan, het ziet er naar uit dat je het echt nodig hebt.
Ik ben al bezig met deze tutorial. Wellicht weet iemand nog andere snel OOP lerende tutorials? :)

Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 12-09 11:48
Jup, dit moet je met OOP doen of met anonymous functions, maar dat laatste is in PHP niet echt de beste oplossing.

Wat jij wilt kan bijvoorbeeld wel in Javascript, maar dat is een heel ander type taal.

Kun je iets concreter zijn met je probleem. Het voorbeeld wat je nu aanhaalt, is namelijk tamelijk vaag en totaal niet logisch. Een functie heeft namelijk 1 specifieke functie en de functienaam moet dit dan ook goed vertegenwoordigen. Wat nog wel kan, is werken met callbacks

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function doSomething( $a, $b, $callback ){
    $c = $a + $b;
    $callback( $c );
}

function echoAndDie( $data ){
    echo $data;
    die();
}

function writeToFile( $input ){
    file_put_contents('my.log', $input);
}

doSomething( 4, 10, 'echoAndDie' );

// Wordt natuurlijk niet bereikt door de die in vorige callback
doSomething( 9,9, 'writeToFile');

[ Voor 3% gewijzigd door storeman op 27-06-2012 15:50 ]

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

DeepFreeze.NL schreef op woensdag 27 juni 2012 @ 15:44:
[...]

Ik ben al bezig met deze tutorial. Wellicht weet iemand nog andere snel OOP lerende tutorials? :)
Je moet helemaal niet willen zoeken naar "snel OOP lerende tutorials". Je moet zoeken naar tutorials die het je goed bijbrengen en de tijd die het kost voor lief nemen. Het OOP-paradigma leer je niet even tussen neus en lippen door...

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Functies binnen functies, totally blew my head :p

Heel dat OOP verhaal terzijde: Waarom zet je die derde "hello" functie niet gewoon buiten de andere 2 functies?

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Boeboe schreef op woensdag 27 juni 2012 @ 15:56:
Functies binnen functies, totally blew my head :p
Kan wel degelijk handig zijn hoor, maar dan wel in de vorm van anonieme functies. En tegelijkertijd is het in PHP juist vaak weer niet nodig.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 07:59
storeman schreef op woensdag 27 juni 2012 @ 15:46:
Jup, dit moet je met OOP doen of met anonymous functions, maar dat laatste is in PHP niet echt de beste oplossing.
Waarom zijn Closures in PHP geen goede oplossing als ik zo vragen mag?

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Het ziet er nogal naar uit dat de TS gewoon OOP nodig heeft, om dan anonieme functies aan te raden is gewoon verkeerd. Het is imo. een beetje alsof je iemand variabele variabelen gaat aanraden ipv. array's te gebruiken ;)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Gezien de heel erg uitgeklede testcase zouden anonieme functies best een goeie oplossing kunnen zijn hoor, al is de kans inderdaad groter dat OOP hier een betere oplossing is. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 07:59
Cartman! schreef op woensdag 27 juni 2012 @ 16:58:
Het ziet er nogal naar uit dat de TS gewoon OOP nodig heeft, om dan anonieme functies aan te raden is gewoon verkeerd. Het is imo. een beetje alsof je iemand variabele variabelen gaat aanraden ipv. array's te gebruiken ;)
Het ging mij met name om de zin: 'maar dat laatste is in PHP niet echt de beste oplossing.'.

Als wij de TS zijn test case goed doornemen zien wij ook dat 'echo' niet thuishoort in een functie als dit, daar heb je namelijk views voor.

Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 12-09 11:48
Manuel schreef op woensdag 27 juni 2012 @ 16:28:
[...]

Waarom zijn Closures in PHP geen goede oplossing als ik zo vragen mag?
Ik wist dat PHP <5.3 hier gewoon niet voor gemaakt was. Ik heb even wat zitten lezen, sinds 5.3 worden closures een stuk beter ondersteund. Ik neem dan ook terug dat closures in PHP geen goede oplossing zijn, dit was zo.

Toch blijven Closures meestal noodgrepen, die je met OOP vaak transparanter op kan vangen.

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Ik denk dat TS gewoon eens een framework moet gebruiken, bijvoorkeur jQuery. Dat werkt altijd :Y)
storeman schreef op donderdag 28 juni 2012 @ 16:18:
[...]

Toch blijven Closures meestal noodgrepen, die je met OOP vaak transparanter op kan vangen.
Ik zie nu niet waarom mensen hier als oplossing "OOP of closures" roepen. Dat zijn echt compleet verschillende dingen. Appels met peren vergelijken.

Daarnaast denk ik dat een aantal technieken binnen OOP niet per se beter zijn dan closures. Juist het gebruik van closures in een OOP applicatie kunnen krachtig zijn, gewoon de right tool for the job zoeken.
Cartman! schreef op donderdag 28 juni 2012 @ 17:02:
[...]

Daar heeft hij in PHP alleen niet zoveel aan ;)
offtopic:
Misschien had ik de smiley moeten vervangen door iets nóg sarcastischer?

[ Voor 15% gewijzigd door mithras op 28-06-2012 17:08 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
mithras schreef op donderdag 28 juni 2012 @ 16:36:
Ik denk dat TS gewoon eens een framework moet gebruiken, bijvoorkeur jQuery. Dat werkt altijd :Y)
Daar heeft hij in PHP alleen niet zoveel aan ;)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12-09 15:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

storeman schreef op donderdag 28 juni 2012 @ 16:18:
[...]


Ik wist dat PHP <5.3 hier gewoon niet voor gemaakt was. Ik heb even wat zitten lezen, sinds 5.3 worden closures een stuk beter ondersteund. Ik neem dan ook terug dat closures in PHP geen goede oplossing zijn, dit was zo.
Voor PHP 5.3 ondersteunde PHP toch überhaupt geen closures :?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

.oisyn schreef op donderdag 28 juni 2012 @ 17:14:
[...]

Voor PHP 5.3 ondersteunde PHP toch überhaupt geen closures :?
Niet op de nette manier, nee, maar het kon wel.

[ Voor 8% gewijzigd door NMe op 28-06-2012 17:20 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12-09 15:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijs je nu naar ergens in de comments ofzo?
5.3.0 Anonymous functions become available.
.edit: en ik zie niet helemaal wat er niet net is aan de function() { } syntax.

[ Voor 64% gewijzigd door .oisyn op 28-06-2012 17:27 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:39

Janoz

Moderator Devschuur®

!litemod

Mwah, met de huidige testcase is absoluut niet op te maken tegen welk probleem de topicstarter nu werkelijk aanloopt. Deze testcase heeft immers geen enkele reden waarom je die functies een andere naam kunt geven en buiten de functie kunt halen. Het lijkt me dan ook handiger wanneer de topicstarter een beter voorbeeld aandraagt welke duidelijker aangeeft wat de restricties zijn waardoor hij denkt dit nodig te moeten hebben.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

.oisyn schreef op donderdag 28 juni 2012 @ 17:24:
Verwijs je nu naar ergens in de comments ofzo?

[...]

.edit: en ik zie niet helemaal wat er niet net is aan de function() { } syntax.
Ik linkte per ongeluk naar de verkeerde pagina. Had er drie open staan. Dit was de andere, en die is dus niet netjes. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12-09 15:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

Aha. Maar die maakt dus geen closures :)

.edit: ik zie al waar de verarring vandaan komt, en het is waarschijnlijk door de ignorantie van de PHP doc schrijvers. In tegenstelling tot wat ze zelf beweren is een anonymous function niet een andere naam voor een closure. Beide hebben verschillende eigenschappen (maar zijn niet mutual exclusive). Een anonymous function is gewoon een functie zonder naam (die zowel create_function() als de function() { } syntax dus produceren). Een closure is daarentegen een (al dan niet anonieme) functie die de lokale scope capturet (of: overcloset). Dat is natuurlijk een nogal essentieel verschil - in een functie gemaakt door create_function kun je niet lokale variabelen referencen, tenzij je die variabelen direct in de functie-string plempt.

[ Voor 89% gewijzigd door .oisyn op 28-06-2012 17:52 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Mja, die termverwarring begon een beetje toen Manuel in "[PHP] Functie binnen functie: Cannot redeclare" vroeg waarom closures een slecht plan waren als reactie op iemand die zei dat anonymous functions in PHP een slecht plan waren. :+

Maar je hebt helemaal gelijk natuurlijk. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Janoz schreef op donderdag 28 juni 2012 @ 17:25:
Mwah, met de huidige testcase is absoluut niet op te maken tegen welk probleem de topicstarter nu werkelijk aanloopt. Deze testcase heeft immers geen enkele reden waarom je die functies een andere naam kunt geven en buiten de functie kunt halen. Het lijkt me dan ook handiger wanneer de topicstarter een beter voorbeeld aandraagt welke duidelijker aangeeft wat de restricties zijn waardoor hij denkt dit nodig te moeten hebben.
Wellicht dat het probleem waar ik tegen aanloop met deze code wat duidelijker is:
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
ini_set("display_errors", 1); error_reporting(E_ALL ^ E_NOTICE);

function aantal($land,$sport) {
    $land($sport);
}

function nederland($sport) {
    
    function voetbal() {
        return 10;
    }
    
    function tennis() {
        return 20;
    }
    
    $sport();
}

function duitsland($sport) {
    
    function voetbal() {
        return 100;
    }
    
    function tennis() {
        return 200;
    }
    
    $sport();
}

echo "nederland: ".aantal('nederland','voetbal');
echo "duitsland: ".aantal('duitsland','voetbal');

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Kun je niet beter gewoon een multi-dimensionale array gebruiken als dit alles is?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$data = array(
    'nederland' => array(
        'voetbal' => 10,
        'tennis' => 20
    ),
    'duitsland' => array(
        'voetbal' => 100,
        'tennis' => 200
    )
);

echo $data['nederland']['voetbal'];
echo $data['duitsland']['voetbal'];


Je maakt het voor jezelf erg ingewikkeld nu met het aanroepen van variabele functienamen.

Acties:
  • 0 Henk 'm!

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Nee, want achter duitsland->voetbal hangt een hele berekening.
Deze berekening is anders dan nederland->voetbal of duitsland->tennis.

De reden waarom ik het op deze wijze wil doen is om alles overzichtelijk te houden, want er komen nog veel meer sporten bij.

Acties:
  • 0 Henk 'm!

  • Wiethoofd
  • Registratie: Juli 2007
  • Laatst online: 14-08 12:22

Wiethoofd

Broadcast TOM

Zijn er geen overlappingen in de berekening dat je gewoon meerdere variabelen meegeeft aan je functie(s) om zo je berekeningen te doen?

In dit geval heb je dus je testcase/code teveel gestript om antwoord op je specifieke probleem te krijgen :P

Volg me op Twitter/X & Bluesky


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Pfff voor je nieuwere voorbeeld hoef je nog steeds geen globale functions te declaren, dus ga eens wat aan je kennis over OOP en datastructuren doen.

{signature}


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Als er berekening achter zitten ipv. statische getallen zou ik toch inderdaad eens kijken naar OOP ;)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12-09 15:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dat oeverloze gelul over OOP de hele tijd, het lost het probleem helemaal niet op!
Je zult hoe dan ook:
• een functie moeten implementeren per permutatie
• een mapping moeten maken van permutatie naar functie.

Dat kun je doen met classes/interfaces en een factory ja. Maar ook met een set losse functies (eventueel in namespaces). Hoe je het doet maakt eigenlijk niet zo uit, maar het is onzin dat het met OOP ineens alles opgelost is.

Het meest overzichtelijk lijkt mij persoonlijk zelfs niet zo heel erg veel afwijken van de initiele poging van de TS:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
function calculate_nederland_voetbal() { ... }
function calculate_nederland_tennis() { ... }
// etc.

function aantal($land, $sport)
{
    $f = "calculate_$land_$sport";
    if (function_exists($f))
        $f();
    else
        die("idiot!");
}


Je kan alles in OO classes gaan zitten gieten, maar dat geeft uiteindelijk alleen maar meer clutter en overhead (in termen van functionaliteit per regels code bedoel ik) dan een set losse functies, zonder ook maar enig noemenswaardig voordeel (anders dan: kijk mij eens hip zijn ik gebruik OOP)

[ Voor 44% gewijzigd door .oisyn op 29-06-2012 12:28 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
DeepFreeze.NL schreef op vrijdag 29 juni 2012 @ 12:12:
Nee, want achter duitsland->voetbal hangt een hele berekening.
Deze berekening is anders dan nederland->voetbal of duitsland->tennis.

De reden waarom ik het op deze wijze wil doen is om alles overzichtelijk te houden, want er komen nog veel meer sporten bij.
Nog meer reden om inderdaad naar wat object-gestructureerd werken te kijken. Hierbij kan je denken dat je verschillende Land objecten hebt, verschillende Sport objecten. Die spelen samen een Wedstrijd en daar hangt een Uitslag aan vast. Daar kan je vervolgens je berekeningen op loslaten en een "score" berekenen.

Acties:
  • 0 Henk 'm!

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Nu ben ik mij sinds gister aan het verdiepen in OOP. Ik heb inmiddels al een boek besteld om het leerproces te versnellen :).

Nu heb ik de volgende code geschreven (wat er naar uitziet dat het werkt) en zou daar graag wat feedback op willen krijgen!

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
class Aantal {

    private $_land;
    private $_sport;
    
    public function __construct($land,$sport) {
        $this->_land = $land;
        $this->_sport = $sport;
    }
    
    public function getAantal() {
        
        $class = ucfirst($this->_land);
        $function = $this->_sport;
        return $class::$function();
    }
}

class Nederland {
    
    public function voetbal() {
        return 10;
    }
    
    public function tennis() {
        return 20;
    }
}

class Duitsland {
    
    public function voetbal() {
        return 100;
    }
    
    public function tennis() {
        return 200;
    }
}
$aantal = new Aantal('nederland','voetbal');
echo $aantal->getAantal()."<br>";

$aantal = new Aantal('duitsland','tennis');
echo $aantal->getAantal()."<br>";


Wat ik mij o.a. afvraag is of de class Aantal wel noodzakelijk is, de volgende oplossing voldoet ook prima:
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
function getAantal($land,$sport) {
    $class = ucfirst($land);
    $function = $sport;
    return $class::$function();
}

class Nederland {
    
    public function voetbal() {
        return 10;
    }
    
    public function tennis() {
        return 20;
    }
}

class Duitsland {
    
    public function voetbal() {
        return 100;
    }
    
    public function tennis() {
        return 200;
    }
}
//$aantal = new Aantal('nederland','voetbal');
echo getAantal('nederland','voetbal')."<br>";

//$aantal = new Aantal('duitsland','voetbal');
echo getAantal('nederland','tennis')."<br>";
echo getAantal('duitsland','tennis')."<br>";

[ Voor 25% gewijzigd door DeepFreeze.NL op 29-06-2012 14:49 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12-09 15:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

Now look what you all did. Gebruikt ie OOP, klopt er geen drol van ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik denk dat je het vooral even op losse functies moet houden zolang je dat OOP-boek niet doorgelezen hebt. "Aantal" is niet bepaald iets dat als class gemodelleerd hoort te worden, en Nederland en Duitsland ook niet. Een class Country waar je Nederland en Duitsland als object uit instantiëert zou bijvoorbeeld logischer zijn.

Totdat je de kennis achter de kiezen hebt die dat soort dingen vanzelfsprekend voor je maakt, kan ik me alleen maar aansluiten bij .oisyn in "[PHP] Functie binnen functie: Cannot redeclare".

[ Voor 3% gewijzigd door NMe op 29-06-2012 15:03 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1