Wel of niet declareren private,public,protected in geval...
Bezig PhP OOP te studeren...
Ik heb nu deze code:
en
In meerdere tutorials zie ik uitleg over het declareren van een variabele private, public of protected.
Maar in dit voorbeeld zie ik de noodzaak daarvan niet direct...
Is het erg als je deze declaratie weg laat? Of is het echt werkelijk altijd nodig?
Ofwel, kan iemand uitleggen wat de reden is van het wel doen, of de reden voor het niet perse hoeven doen?
Dit staat helaas net niet uitgelegd in alle tutorials die ik tot nu toe gelezen heb...
Ik ga er van uit dat dit:
public $naam;
dan nog vóór de functie moet komen te staan.
Alvast dank voor de opheldering...
vr gr Eric
Ik heb nu deze code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
include_once("config.php");
include_once("classes/participant.php");
unset($result);
$readParticipant = new Participant();
$result = $readParticipant->getParticipant('Pietje');
echo "De getallen van ".$result[0]." zijn: ".$result[1].",".$result[2].",".$result[3].",".$result[4].",".$result[5].",".$result[6];
echo "<br>";
?>
include_once("config.php");
include_once("classes/participant.php");
unset($result);
$readParticipant = new Participant();
$result = $readParticipant->getParticipant('Pietje');
echo "De getallen van ".$result[0]." zijn: ".$result[1].",".$result[2].",".$result[3].",".$result[4].",".$result[5].",".$result[6];
echo "<br>";
?>
en
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Participant{
function getParticipant($naam){
$query_numbers_one_person = mysql_query("SELECT naam,a,b,c,d,e,f FROM lotto_users WHERE naam='$naam'");
$array_numbers_one_person = mysql_fetch_row($query_numbers_one_person);
return $array_numbers_one_person;
}
}
?>
class Participant{
function getParticipant($naam){
$query_numbers_one_person = mysql_query("SELECT naam,a,b,c,d,e,f FROM lotto_users WHERE naam='$naam'");
$array_numbers_one_person = mysql_fetch_row($query_numbers_one_person);
return $array_numbers_one_person;
}
}
?>
In meerdere tutorials zie ik uitleg over het declareren van een variabele private, public of protected.
Maar in dit voorbeeld zie ik de noodzaak daarvan niet direct...
Is het erg als je deze declaratie weg laat? Of is het echt werkelijk altijd nodig?
Ofwel, kan iemand uitleggen wat de reden is van het wel doen, of de reden voor het niet perse hoeven doen?
Dit staat helaas net niet uitgelegd in alle tutorials die ik tot nu toe gelezen heb...
Ik ga er van uit dat dit:
public $naam;
dan nog vóór de functie moet komen te staan.
Alvast dank voor de opheldering...
vr gr Eric
Een declaratie van een variabele is sinds PHP5 van belang (zo uit me hoofd)
Alle variabelen die je gebruikt door je class moet je opgeven.
De manier hoe jij nu de functie gebruikt zal je geen public hoeven te declareren. Omdat het een parameter is en geen property van je class..
Probeer dit maar eens:
Alle variabelen die je gebruikt door je class moet je opgeven.
De manier hoe jij nu de functie gebruikt zal je geen public hoeven te declareren. Omdat het een parameter is en geen property van je class..
Probeer dit maar eens:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
class Participant
{
public $name;
function getParticipant()
{
$query_numbers_one_person = mysql_query("SELECT naam,a,b,c,d,e,f FROM lotto_users WHERE naam='$this->name'");
$array_numbers_one_person = mysql_fetch_row($query_numbers_one_person);
return $array_numbers_one_person;
}
}
$readParticipant = new Participant();
$readParticipant->name = 'Pietje';
$result = $readParticipant->getParticipant();
?>
class Participant
{
public $name;
function getParticipant()
{
$query_numbers_one_person = mysql_query("SELECT naam,a,b,c,d,e,f FROM lotto_users WHERE naam='$this->name'");
$array_numbers_one_person = mysql_fetch_row($query_numbers_one_person);
return $array_numbers_one_person;
}
}
$readParticipant = new Participant();
$readParticipant->name = 'Pietje';
$result = $readParticipant->getParticipant();
?>
ah, ok... dankje Rickert! Dat verheldert al e.e.a. :-)
Dus als ik het goed begrijp is het dus voor specifiek dit voorbeeld niet perse nodig...
Enig idee of dat in professionele kring ook soms achterwege wordt gelaten dan dus?
Of is in de professionele wereld dit een stricte voorwaarde dat het altijd gedeclareerd wordt?
(bestaat daar een afspraak over?)
Dus als ik het goed begrijp is het dus voor specifiek dit voorbeeld niet perse nodig...
Enig idee of dat in professionele kring ook soms achterwege wordt gelaten dan dus?
Of is in de professionele wereld dit een stricte voorwaarde dat het altijd gedeclareerd wordt?
(bestaat daar een afspraak over?)
Het ligt aan de class maar je kan er voor 90% vanuit gaan dat je altijd op deze manier werkt.
Want je hebt nu maar gebruikersnaam in de method.
Wat als je meerdere acties wilt doen?
Bijvoorbeeld:
Want je hebt nu maar gebruikersnaam in de method.
Wat als je meerdere acties wilt doen?
Bijvoorbeeld:
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
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
<?php
class Participant
{
public $name;
function getParticipant()
{
$query_numbers_one_person = mysql_query("SELECT naam,a,b,c,d,e,f FROM lotto_users WHERE naam='$this->name'");
$array_numbers_one_person = mysql_fetch_row($query_numbers_one_person);
return $array_numbers_one_person;
}
public function updateImage($imageName)
{
mysql_query("UPDATE image_name SET $imageName WHERE naam='$this->name'");
}
}
$readParticipant = new Participant();
$readParticipant->name = 'Pietje';
$result = $readParticipant->getParticipant();
$readParticipant->updateImage($result['id']);
?>
class Participant
{
public $name;
function getParticipant()
{
$query_numbers_one_person = mysql_query("SELECT naam,a,b,c,d,e,f FROM lotto_users WHERE naam='$this->name'");
$array_numbers_one_person = mysql_fetch_row($query_numbers_one_person);
return $array_numbers_one_person;
}
public function updateImage($imageName)
{
mysql_query("UPDATE image_name SET $imageName WHERE naam='$this->name'");
}
}
$readParticipant = new Participant();
$readParticipant->name = 'Pietje';
$result = $readParticipant->getParticipant();
$readParticipant->updateImage($result['id']);
?>
Persoonlijk vind ik het wel netter om $name private te declareren.
Voorbeeldje:
Voorbeeldje:
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
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
<?php
class Participant
{
private $name;
function __construct($naam)
{
$this->setNaam($naam);
}
public function getParticipant()
{
$query_numbers_one_person = mysql_query("SELECT naam,a,b,c,d,e,f FROM lotto_users WHERE naam='" . $this->naam . "'");
$array_numbers_one_person = mysql_fetch_row($query_numbers_one_person);
return $array_numbers_one_person;
}
public function getNaam()
{
return $naam;
}
public function setNaam($naam)
{
$this->naam = ucfirst($naam); // Kijk nu wordt de naam altijd met een hoofdletter.
}
}
$p = new Participant('fRaNk');
?>
class Participant
{
private $name;
function __construct($naam)
{
$this->setNaam($naam);
}
public function getParticipant()
{
$query_numbers_one_person = mysql_query("SELECT naam,a,b,c,d,e,f FROM lotto_users WHERE naam='" . $this->naam . "'");
$array_numbers_one_person = mysql_fetch_row($query_numbers_one_person);
return $array_numbers_one_person;
}
public function getNaam()
{
return $naam;
}
public function setNaam($naam)
{
$this->naam = ucfirst($naam); // Kijk nu wordt de naam altijd met een hoofdletter.
}
}
$p = new Participant('fRaNk');
?>
Haha... de class wordt zo lekker uitgebreid :-)
Maar top jongens! Voor mij is het helder...
Hier kan ik tenminste wat mee voor mijn begripsvorming!
Dankjulliewel!
vr gr Eric
Maar top jongens! Voor mij is het helder...
Hier kan ik tenminste wat mee voor mijn begripsvorming!
Dankjulliewel!
vr gr Eric
Dat is inderdaad een aanname @frank. Het ging Eric om het principe of er wel of geen public bij moest.
Het is helder.
Frank zijn class gebruikt de functies om de naam te vullen, dit maakt het veiliger. In ons kleine voorbeeld is dit overbodig naar mijn weten.
Ook gebruikt Frank een __construct + een setNaam. Bij het creeren van het object geef je nu meteen mee wat de naam is.
Later zou je de naam nog kunnen wijzigen naar een andere naam.
Principe is duidelijk nu denk ik.
Het is helder.
Frank zijn class gebruikt de functies om de naam te vullen, dit maakt het veiliger. In ons kleine voorbeeld is dit overbodig naar mijn weten.
Ook gebruikt Frank een __construct + een setNaam. Bij het creeren van het object geef je nu meteen mee wat de naam is.
Later zou je de naam nog kunnen wijzigen naar een andere naam.
Principe is duidelijk nu denk ik.




