Class opzetten
Ik ben bezig met mijn eerste class en dat werkt wel... maar nu wil ik een paar variableen opgeven.
En dat schijnt niet te mogen:
Ik wil:
Maar ik krijg dus gelijk deze foutmelding:
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /home/zunflappi/domains/zunflappie.nl/public_html/temp/getal_naar_geschreven.php on line 7
Lijn 7 is waar ik $getal[0] definieer.
Wat doe ik verkeerd?
Public / static / protected ervoor etc helpt ook niet.
eerst $getal = array(); werkt ook niet.
// edit
Heb het direct in een volledige array gestoken (veel werk en onoverzichtelijker, maar het werkt)... maar hoe kan ik deze array nou gebruiken in de functies?
Direct $getal aanroepen kan niet, want dan zegt PHP dat die niet bestaat.
Ik heb er "public" voor staan.... (en static/private werken ook niet).
En dat schijnt niet te mogen:
Ik wil:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
class getal_naar_geschreven
{
$getal[0] = "nul";
$getal[1] = "een";
$getal[2] = "twee";
$getal[3] = "drie";
$getal[4] = "vier";
// etc
// en dan wat andere functies die het wel doen
}
{
$getal[0] = "nul";
$getal[1] = "een";
$getal[2] = "twee";
$getal[3] = "drie";
$getal[4] = "vier";
// etc
// en dan wat andere functies die het wel doen
}
Maar ik krijg dus gelijk deze foutmelding:
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /home/zunflappi/domains/zunflappie.nl/public_html/temp/getal_naar_geschreven.php on line 7
Lijn 7 is waar ik $getal[0] definieer.
Wat doe ik verkeerd?
Public / static / protected ervoor etc helpt ook niet.
eerst $getal = array(); werkt ook niet.
// edit
Heb het direct in een volledige array gestoken (veel werk en onoverzichtelijker, maar het werkt)... maar hoe kan ik deze array nou gebruiken in de functies?
Direct $getal aanroepen kan niet, want dan zegt PHP dat die niet bestaat.
Ik heb er "public" voor staan.... (en static/private werken ook niet).
Gewijzigd op 01/01/1970 01:00:00 door Eddy Erkelens
Gesponsorde koppelingen:
Je kan bij het declareren van properties maar een heel beperkte syntax gebruiken. Je kan bijvoorbeeld wel als strings en nummertjes toewijzen, en zelfs arrays. Maar je kan geen functies of andere evaluaties uitvoeren. Gelukkig hebben we __construct() daarvoor nog :)
Code (php)
Dank u voor de snelle reactie.
Die __construct() wordt automatisch uitgevoerd?
Want dan kan het natuurlijk ook (wel zo netjes).
Die __construct() wordt automatisch uitgevoerd?
Want dan kan het natuurlijk ook (wel zo netjes).
Edit:
Nu krijg ik alsnog de variable $getal niet aangeroepen in een functie.
Ook als ik public van maak werkt dat niet.
Nu krijg ik alsnog de variable $getal niet aangeroepen in een functie.
Ook als ik public van maak werkt dat niet.
Gewijzigd op 01/01/1970 01:00:00 door Eddy Erkelens
__construct wordt aangeroepen zodra je een nieuwe instantie maakt van de klasse:
En ik zie dat ik net een foutje heb gemaakt in mijn voorbeeld. In PHP benader je properties van het instantie waar een method aan gekoppeld is via $this. Voorbeeldje 2 moet dus zijn:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$schrijver = new getal_naar_geschreven(); // -> daar wordt je __construct aangeroepen
$instantie = new klasse($arg1, $arg2);
// PHP doet als het ware nu automatisch deze regel erna:
$instantie->__construct($arg1, $arg2);
?>
$schrijver = new getal_naar_geschreven(); // -> daar wordt je __construct aangeroepen
$instantie = new klasse($arg1, $arg2);
// PHP doet als het ware nu automatisch deze regel erna:
$instantie->__construct($arg1, $arg2);
?>
En ik zie dat ik net een foutje heb gemaakt in mijn voorbeeld. In PHP benader je properties van het instantie waar een method aan gekoppeld is via $this. Voorbeeldje 2 moet dus zijn:
Dit werkt.
Ik ging nogal de fout in met $this->$getal[], wat natuurlijk niet mag.
Bedankt voor zover.
Ik ging nogal de fout in met $this->$getal[], wat natuurlijk niet mag.
Bedankt voor zover.
Wanneer je met classes werkt, moet je object georiƫnteerd denken.
Enerzijds maak je een klasse. Een klasse bevat properties (variabelen binnen de klasse) en methods (functies binnen een klasse).
Anderzijds gebruik je die klasse. Dat doe je door objecten te maken van die klasse.
Een klasse op zich voert niets uit. Het is pas wanneer je een object maakt van die klasse dat je de properties en methods gebruikt.
Alles wat gebeurt binnen een klasse, moet gebeuren binnen methods. Buiten de methods is het enkel de bedoeling dat je properties declareert.
Enerzijds maak je een klasse. Een klasse bevat properties (variabelen binnen de klasse) en methods (functies binnen een klasse).
Anderzijds gebruik je die klasse. Dat doe je door objecten te maken van die klasse.
Een klasse op zich voert niets uit. Het is pas wanneer je een object maakt van die klasse dat je de properties en methods gebruikt.
Alles wat gebeurt binnen een klasse, moet gebeuren binnen methods. Buiten de methods is het enkel de bedoeling dat je properties declareert.
Het werkt reeds.
Ik dacht dat je nog wel enige hierachie had, dus met inspringen met { etc.
Maar dat blijkt dus geen invloed te hebben.
Uiteraard moeten de {} wel goed staan natuurlijk :D.
Ik dacht dat je nog wel enige hierachie had, dus met inspringen met { etc.
Maar dat blijkt dus geen invloed te hebben.
Uiteraard moeten de {} wel goed staan natuurlijk :D.
Inspringen heeft nooit een invloed. Je kan een volledige site schrijven op 1 lijn. Geen enkel probleem.
Het is gewoon een slecht idee.
Inspringen, is een techniek die enkel dient om beter aan je eigen (of andermans') code uit te raken.
Het is gewoon een slecht idee.
Inspringen, is een techniek die enkel dient om beter aan je eigen (of andermans') code uit te raken.
Bedoelde niet zozeer het inspringen van de php-code maar meer het meervoudig gebruik van {{{}{}}}{} etc.
Weet iemand toevallig de limiet van de int-getallen van php?
Of is dat 256's negens achter elkaar?
Weet iemand toevallig de limiet van de int-getallen van php?
Of is dat 256's negens achter elkaar?
Van intval:
Het hangt dus maar net af van welk bit systeem je hebt. 32 of 64 bit.
Quote:
"The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval('1000000000000') will return 2147483647. The
maximum signed integer value for 64 bit systems is 9223372036854775807."
maximum signed integer value for 64 bit systems is 9223372036854775807."
Het hangt dus maar net af van welk bit systeem je hebt. 32 of 64 bit.
Aha... dan weet ik tot hoever ik moet gaan met mijn nieuwe class.
Maarrr.... wat ik nu aan het typen ben (was al bij 13 getallen achter elkaar) ben ik niet slim in elkaar aan het zetten.
Dit moet ook met een for-loop kunnen, maar ik kom er even niet meer uit.
Iemand een goede vervanger?
Dus vanaf (strlen=6 t/m strlen=18)?
Let op dat het eerste deel de eerste keer dus exec_1 uitvoert met 1 teken, de ronde daarna exec_2 met 2 tekens en de derde keer exec_3 met 3 tekens. Daarna dus weer beginnen met 1.
En voor de raders: het wordt inderdaad een functie om getallen (tot 9223372036854775807) om te zetten naar tekst.
Zie http://www.zunflappie.nl/temp/getal_naar_geschreven.php
Maarrr.... wat ik nu aan het typen ben (was al bij 13 getallen achter elkaar) ben ik niet slim in elkaar aan het zetten.
Dit moet ook met een for-loop kunnen, maar ik kom er even niet meer uit.
Iemand een goede vervanger?
Dus vanaf (strlen=6 t/m strlen=18)?
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
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
<?php // per lengte laten verschillen
if(strlen($int) == 1)
{ return $this->exec_1($int); }
if(strlen($int) == 2)
{ return $this->exec_2($int); }
if(strlen($int) == 3)
{ return $this->exec_3($int); }
if(strlen($int) == 4)
{
$deel[] = $this->exec_2(substr($int, 0, 2)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_2(substr($int, 2, 2));
return implode("", $deel);
}
if(strlen($int) == 5)
{
$deel[] = $this->exec_2(substr($int, 0, 2)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 2, 3));
return implode("", $deel);
}
if(strlen($int) == 6)
{
$deel[] = $this->exec_3(substr($int, 0, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 3, 3));
return implode("", $deel);
}
if(strlen($int) == 7)
{
$deel[] = $this->exec_1(substr($int, 0, 1)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 1, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 5, 3));
return implode("", $deel);
}
if(strlen($int) == 8)
{
$deel[] = $this->exec_2(substr($int, 0, 2)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 3, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 6, 3));
return implode("", $deel);
}
if(strlen($int) == 9)
{
$deel[] = $this->exec_3(substr($int, 0, 3)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 3, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 6, 3));
return implode("", $deel);
}
if(strlen($int) == 10)
{
$deel[] = $this->exec_1(substr($int, 0, 1)) . $this->space . $this->getal[1000000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 1, 3)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 4, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 7, 3));
return implode("", $deel);
}
if(strlen($int) == 11)
{
$deel[] = $this->exec_2(substr($int, 0, 2)) . $this->space . $this->getal[1000000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 2, 3)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 5, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 8, 3));
return implode("", $deel);
}
if(strlen($int) == 12)
{
$deel[] = $this->exec_3(substr($int, 0, 3)) . $this->space . $this->getal[1000000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 3, 3)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 6, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 9, 3));
return implode("", $deel);
}
} ?>
if(strlen($int) == 1)
{ return $this->exec_1($int); }
if(strlen($int) == 2)
{ return $this->exec_2($int); }
if(strlen($int) == 3)
{ return $this->exec_3($int); }
if(strlen($int) == 4)
{
$deel[] = $this->exec_2(substr($int, 0, 2)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_2(substr($int, 2, 2));
return implode("", $deel);
}
if(strlen($int) == 5)
{
$deel[] = $this->exec_2(substr($int, 0, 2)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 2, 3));
return implode("", $deel);
}
if(strlen($int) == 6)
{
$deel[] = $this->exec_3(substr($int, 0, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 3, 3));
return implode("", $deel);
}
if(strlen($int) == 7)
{
$deel[] = $this->exec_1(substr($int, 0, 1)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 1, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 5, 3));
return implode("", $deel);
}
if(strlen($int) == 8)
{
$deel[] = $this->exec_2(substr($int, 0, 2)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 3, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 6, 3));
return implode("", $deel);
}
if(strlen($int) == 9)
{
$deel[] = $this->exec_3(substr($int, 0, 3)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 3, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 6, 3));
return implode("", $deel);
}
if(strlen($int) == 10)
{
$deel[] = $this->exec_1(substr($int, 0, 1)) . $this->space . $this->getal[1000000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 1, 3)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 4, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 7, 3));
return implode("", $deel);
}
if(strlen($int) == 11)
{
$deel[] = $this->exec_2(substr($int, 0, 2)) . $this->space . $this->getal[1000000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 2, 3)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 5, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 8, 3));
return implode("", $deel);
}
if(strlen($int) == 12)
{
$deel[] = $this->exec_3(substr($int, 0, 3)) . $this->space . $this->getal[1000000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 3, 3)) . $this->space . $this->getal[1000000] . $this->space;
$deel[] = $this->exec_3(substr($int, 6, 3)) . $this->space . $this->getal[1000] . $this->space;
$deel[] = $this->exec_3(substr($int, 9, 3));
return implode("", $deel);
}
} ?>
Let op dat het eerste deel de eerste keer dus exec_1 uitvoert met 1 teken, de ronde daarna exec_2 met 2 tekens en de derde keer exec_3 met 3 tekens. Daarna dus weer beginnen met 1.
En voor de raders: het wordt inderdaad een functie om getallen (tot 9223372036854775807) om te zetten naar tekst.
Zie http://www.zunflappie.nl/temp/getal_naar_geschreven.php
Gewijzigd op 01/01/1970 01:00:00 door Eddy Erkelens



