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:
<?php

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


bestand 2 class:
<?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.

.
<?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**
?>

<?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.
<?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;
?>

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!
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'))
;

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

Reageren