Door
Robert Jansen
op 18-06-2015 15:45
gewijzigd op 18-06-2015 15:52
4.199 views
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.
<?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?
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:
<?php
$laborMarket = new LaborMarket();
$laborMarket->append(new Job('fietsenmaker'));
$laborMarket->append(new Job('PHP developer'));
?>
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.
<?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'))
;