OOP Set Get etc
Ik heb onderstaande code, wat ik ik niet helemaal snap is: Dit heb ik erachter gezet //
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
class person {
public $name; //wanneer en waarom heb ik deze property nodig
function __construct($name) {
$this->name = $name;
}
function set_name($new_name) {
$this->name = $new_name;
}
function get_name() {
return $this->name;
}
}
$objPerson = new person("Bas"); //Als je hier een waarde mee geeft wordt dan automatisch de constructor aangeroepen?
$objPerson->set_name('Lisa');
echo $objPerson->get_name() ;
public $name; //wanneer en waarom heb ik deze property nodig
function __construct($name) {
$this->name = $name;
}
function set_name($new_name) {
$this->name = $new_name;
}
function get_name() {
return $this->name;
}
}
$objPerson = new person("Bas"); //Als je hier een waarde mee geeft wordt dan automatisch de constructor aangeroepen?
$objPerson->set_name('Lisa');
echo $objPerson->get_name() ;
je properties heb je nodig om iets te kunnen opslaan in een class. Anders krijg je:
Notice: Undefined property: person::$name
Dat is geen error op zich, maar het slaat niks op.
je constructor wordt aangeroepen automatisch als je een nieuw object aanmaakt van een class. Dus ja je hebt gelijk
Gewijzigd op 01/11/2012 13:06:13 door Flip --
Wanneer wel ;-) probeer het te begrijpen :-$
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class person {
public $name;
function set_name($new_name) {
$this->name = $new_name;
}
function get_name() {
return $this->name;
}
}
$objPerson = new person();
$objPerson->set_name('Lisa');
echo $objPerson->get_name() ;
public $name;
function set_name($new_name) {
$this->name = $new_name;
}
function get_name() {
return $this->name;
}
}
$objPerson = new person();
$objPerson->set_name('Lisa');
echo $objPerson->get_name() ;
Gewijzigd op 01/11/2012 13:11:29 door Bas D L
bij regel 19 wordt een nieuwe instantie gemaakt en dus direct de constructor aangeroepen. vandaar ook het woord new.
Toevoeging op 01/11/2012 13:18:07:
een property is een variabele in je class in jouw geval $name.
een method is een functie in een class zoals get_name
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
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
class person1 {
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
class person2 {
function __construct($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$objPerson1 = new person1();
$objPerson1->set_name('Lisa');
echo $objPerson1->get_name() ;
$objPerson2 = new person2("Bas");
echo $objPerson2->get_name() ;
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
class person2 {
function __construct($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$objPerson1 = new person1();
$objPerson1->set_name('Lisa');
echo $objPerson1->get_name() ;
$objPerson2 = new person2("Bas");
echo $objPerson2->get_name() ;
Gewijzigd op 01/11/2012 13:22:59 door Bas D L
Toevoeging op 01/11/2012 13:40:16:
dus zo
Ahhhhhh, dat wist ik niet...
Bij wat voor een vb code zou je hem dan wel "moeten" declareren?
Gewijzigd op 01/11/2012 13:44:38 door Bas D L
Toevoeging op 01/11/2012 13:46:15:
Als je bijvoorbeeld in C++ of C# gaat schrijven dan krijg je bij het compileren van je code onheroepelijk een foutmelding.
Toevoeging op 01/11/2012 13:47:06:
Bas D L op 01/11/2012 13:41:51:
@Frank,
Ahhhhhh, dat wist ik niet...
Bij wat voor een vb code zou je hem dan wel "moeten" declareren?
Ahhhhhh, dat wist ik niet...
Bij wat voor een vb code zou je hem dan wel "moeten" declareren?
Je vraag is niet helemaal duidelijk Bas.
Frank Nietbelangrijk op 01/11/2012 13:37:49:
het liefst met één van de scopes public, protected of private.
Hoi Frank,
Nu je toch duidelijk aan het uitleggen bent. Kun je mischien heel in het kort de verschillen uitleggen tussen public, protected en private?
SanThe.
Gewijzigd op 01/11/2012 13:50:52 door - SanThe -
Ok, sorry, opnieuw. Onderstaand is duidelijk.
In dit voorbeeld hoef je in principe $name niet te gebruiken, in C wel. Ook duidelijk.
Wanneer moet je $name wel declareren, is daar vb code van?
Ik probeer variable gebruik in een class te begrijpen :-$ ;-)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Person1 {
protected $name;
public function set_name($name) {
$this->name = $name;
}
public function get_name() {
return $this->name;
}
}
$objPerson1 = new Person1();
$objPerson1->set_name('Lisa');
echo $objPerson1->get_name() ;
protected $name;
public function set_name($name) {
$this->name = $name;
}
public function get_name() {
return $this->name;
}
}
$objPerson1 = new Person1();
$objPerson1->set_name('Lisa');
echo $objPerson1->get_name() ;
Gewijzigd op 01/11/2012 13:55:23 door Bas D L
Gewijzigd op 01/11/2012 14:03:57 door Frank Nietbelangrijk
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
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
<?php
class Person {
public $name;
public function setName($name) {
$this->name = $name;
}
};
$persoon = new Person();
$persoon->name = 'jan'; // geen foutmelding $name is publiek dus ik mag er van buiten de class gebruik van maken.
// ------------------------------------------------------------------------------------------------------------------------------
class Person {
protected $name;
function setName($name) {
$this->name = $name;
}
};
$persoon = new Person();
$persoon->name = 'jan'; // Dit geeft een foutmelding. $name is niet publiek dus ik mag er van buiten de class geen gebruik van maken.
$persoon->setName('jan'); // Dit mag wel want de method setName is wel public
// ------------------------------------------------------------------------------------------------------------------------------
class Person {
private $name;
function setName($name) {
$this->name = $name;
}
};
$persoon = new Person();
$persoon->name = 'jan'; // Dit geeft een foutmelding. $name is niet publiek dus ik mag er van buiten de class geen gebruik van maken.
$persoon->setName('jan'); // Dit mag wel want de method setName is wel public
?>
class Person {
public $name;
public function setName($name) {
$this->name = $name;
}
};
$persoon = new Person();
$persoon->name = 'jan'; // geen foutmelding $name is publiek dus ik mag er van buiten de class gebruik van maken.
// ------------------------------------------------------------------------------------------------------------------------------
class Person {
protected $name;
function setName($name) {
$this->name = $name;
}
};
$persoon = new Person();
$persoon->name = 'jan'; // Dit geeft een foutmelding. $name is niet publiek dus ik mag er van buiten de class geen gebruik van maken.
$persoon->setName('jan'); // Dit mag wel want de method setName is wel public
// ------------------------------------------------------------------------------------------------------------------------------
class Person {
private $name;
function setName($name) {
$this->name = $name;
}
};
$persoon = new Person();
$persoon->name = 'jan'; // Dit geeft een foutmelding. $name is niet publiek dus ik mag er van buiten de class geen gebruik van maken.
$persoon->setName('jan'); // Dit mag wel want de method setName is wel public
?>
Gewijzigd op 01/11/2012 14:11:13 door Frank Nietbelangrijk
Heb zelf het boek 'phpmaster' van phpmaster.com en daar staat een afbeelding in die uitlegt wanneer je public, protected of private kan gebruiken.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
Accessed externally? -> yes -> public
|
no
Deny to children? -> yes -> privatie
|
no
Protected
|
no
Deny to children? -> yes -> privatie
|
no
Protected
Gewijzigd op 01/11/2012 14:12:04 door Mebus Hackintosh
Hoe ver ben je met dat boek?
Frank Nietbelangrijk op 01/11/2012 14:11:57:
Hoe ver ben je met dat boek?
Nog niet al te ver. Ik wacht nog op de printed versie ervan (nog niet verzonden) maar heb wel het e-book en het leest goed weg.
Ik weet niet of je dat al wilt
Ik denk dat ik het snap, je kan zowel een property als method buiten de class manipuleren mits ze public zijn, toch?
Klopt Bas.
Frank Nietbelangrijk op 01/11/2012 14:15:03:
okee. Om het verschil tussen private en protected uit te leggen moeten we een stapje dieper.
Ik weet niet of je dat al wilt
Ik weet niet of je dat al wilt
Dat mag :) Daar gaat het boek niet veel verder op in namelijk (denk ik).
Frank Nietbelangrijk op 01/11/2012 14:16:47:
Klopt Bas.
Dankjewel! Dan begrijp ik het, nu nog toepassen hahaha.
Zijn daar nog goede vb van of tuts?