php: array in oop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert Jansen

Robert Jansen

18/06/2015 15:45:56
Quote Anchor link
Hallo,

Op dit moment ben ik bezig met OOP. De bedoeling is dat via een array informatie te zien is. Maar ik krijg geen foutmelding en niks op het scherm.
Verder heb ik twee bestanden.

bestand 1 testscript:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

$job
= new Beroep();
$job-> addBeroep ('piloot');
$job-> addBeroep ('docent');
echo '', $job-> showBeroep();
?>


bestand 2 class:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

class Beroep{
    public $beroep = '';
    
    public function addBeroep(){
        $beroep[] = $beroepen;
    }

    public function showBeroep(){
        return $this-> beroep;
    
    }
}

?>


mijn vraag is: kan iemand mij helpen waar de fout zit?

alvast bedankt.

[code]-tags toegevoegd. Zou je deze willen gebruiken wanneer je code post? Alvast bedankt![/modedit].
Gewijzigd op 18/06/2015 15:52:58 door Wouter J
 
PHP hulp

PHP hulp

25/12/2024 22:39:53
 
Wouter J

Wouter J

18/06/2015 15:49:53
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

public $beroep = ''; // -> $beroep is een lege **string**

// ...

$beroep[] = $beroepen; // -> $beroep wordt ineens behandeld als een **array**

// ...

echo '', $job->showBeroep(); // -> [b]$beroep wordt nu weer behandeld als een **string**
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

public function addBeroep() {
    $beroep[] = $beroepen; // -> $beroep is een lokale variabele in de addBeroep method
    // -> $beroepen bestaat niet

}

?>


Het lijkt me handig als je eerst de basis van PHP leert.
Gewijzigd op 18/06/2015 15:50:16 door Wouter J
 
Johan K

Johan K

18/06/2015 21:16:16
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

class Beroep{
    public $beroep = [];
    
    public function addBeroep($name){
        $this->beroep[] = $name;
    }

    public function showBeroep(){
        return count($this->beroep) > 0 ? implode(', ', $this->beroep ) : '';
    
    }

    function
__toString(){
      return $this->showBeroep();
    }
}


$v = new Beroep();
$v->addBeroep('a');
$v->addBeroep('b');

echo $v;
?>
Gewijzigd op 18/06/2015 21:23:47 door Johan K
 

19/06/2015 09:29:05
Quote Anchor link
Je bent goed bezig en helemaal met OOP.
Nergens voor nodig om prodecurele PHP te leren maar bekijk wel eerst even de basis van PHP.

Je gedachtegang was goed alleen je uitvoering net ff niet.
Ga zo door!
 
Wouter J

Wouter J

19/06/2015 15:19:54
Quote Anchor link
Rickert, ik weet niet helemaal waar jij OOP vandaan haalt. 't is een mooie class, niks mis mee. Maar een Beroep object kan geen beroepen toevoegen. Wat meer OOP zou zoiets zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$laborMarket
= new LaborMarket();
$laborMarket->append(new Job('fietsenmaker'));
$laborMarket->append(new Job('PHP developer'));
?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/06/2015 22:32:24
Quote Anchor link
Als je een class maakt met de naam Beroep (enkelvoud), hou het dan ook bij één beroep.
In OOP is het zeer gebruikelijk dat alle 'dingen' (zelfstandige naamwoorden zoals beroep, gebruiker, email, formfield, lijst) een eigen class krijgen die dan één zo een ding kan opslaan. Een dergelijke class wordt ook wel een Entity genoemd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

class Profession
{
    private $name; // PRIVATE !!!
    
    function __construct($name = '') { // wordt automatisch aangeroepen
        $this->name = $name;
    }

    
    public function getName()
    {

        return $this->name;
    }


    public function setName($name)
    {

        $this->name = $name;
        return $this; // return dit object zodat je later ook dit kunt doen: $beroep->setName('jan')->setEmail('[email protected]');
    }

    function
__toString(){
      return $this->name;
    }
}


class Person
{
    private $name;
    private $professions;
    
    function
__construct() {
        $this->professions = array(); // maak een lege array aan
    }
    
    public function getName()
    {

        return $this->name;
    }


    public function setName($name)
    {

        $this->name = $name;
        return $this;
    }

    
    public function addProfession(Profession $profession)
    {

        $this->professions[] = $profession;
        return $this;
    }

    
    public function getProfessions()
    {

        return $this->professions;
    }
}


$person = new Person();
$person->setName('Frank')
        ->
addProfession(new Profession('programmer'))
        ->
addProfession(new Profession('glazenwasser'))
        ;


echo 'naam: ' . $person->getName() . '<br>';
foreach($person->getProfessions() as $profession)
{

    echo 'beroep: ' . $profession->getName() . '<br>';
}

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.