Olioiden manipulointi luokissa OOP:ssa PHP:ssä
Luokat voivat menetelmiensä parametreina vastaanottaa muiden luokkien olioita ja manipuloida näitä olioita. Katsotaanpa esimerkkiä. Olkoon meillä seuraava luokka:
<?php
class User {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Oletetaan, että päätimme tehdä luokan, joka manipuloi kokoelmaa käyttäjäolioita:
<?php
class UsersCollection {
}
?>
Tallennamme käyttäjäoliot taulukkona yksityisessä ominaisuudessa:
<?php
class UsersCollection {
private $users;
public function __construct() {
$this->users = [];
}
}
?>
Teemme menetelmän uuden käyttäjän lisäämiseksi taulukkoon:
<?php
class UsersCollection {
private $users;
public function __construct() {
$this->users = [];
}
public function add($user) {
$this->users[] = $user;
}
}
?>
Ja nyt teemme menetelmän, joka tulostaa kaikkien käyttäjien nimet:
<?php
class UsersCollection {
private $users;
public function __construct() {
$this->users = [];
}
public function add($user) {
$this->users[] = $user;
}
public function show() {
foreach ($this->users as $user) {
echo $user->getName() . '<br>';
}
}
}
?>
Katsotaanpa luokkamme toimintaa. Aluksi luomme sen olion:
<?php
$uc = new UsersCollection();
?>
Nyt lisäämme kokoelmaamme useita käyttäjiä:
<?php
$uc->add(new User('john'));
$uc->add(new User('eric'));
$uc->add(new User('kyle'));
?>
Ja nyt kutsukaamme menetelmää, joka tulostaa kaikkien käyttäjien nimet:
<?php
$uc->show();
?>
Tee luokka EmployeesCollection,
joka sisältää taulukon työntekijöistä.
Tee tähän luokkaan menetelmä uuden työntekijän lisäämiseksi.
Tee tähän luokkaan menetelmä kaikkien työntekijöiden tulostamiseksi.
Tee tähän luokkaan menetelmä kaikkien työntekijöiden kokonaispalkan laskemiseksi.
Tee tähän luokkaan menetelmä kaikkien työntekijöiden keskipalkan laskemiseksi.