PHP vol.31
- classの続き
class
// Employeer.class.php <?php //↓初めは大文字 class Employeer { //←括弧はここに //プロパティ(名前) public $name; function getName() { //classと関数を見分けるためにも括弧の位置は間違えないように $this->name = 'obt'; return $this->name; } } //←括弧はここに ?>
- 原則1classは1ファイル。
- メソッド≒method≒関数
// test.php <?php // ファイルの読み込み require_once ('Employeer.class.php'); // インスタンスの作成 $employeer = new Employeer(); // 社員名の取り出し echo $employeer->getName(); ?>
- 演算子は前後を空けるが、->の前後は空けない。
プロパティのアクセス修飾子
public | test.phpからも読み込める |
---|---|
private | Fatal error: Cannot access private property Employeer |
protected | Fatal error: Cannot access protected property Employeer |
//Employeer.class.php <?php class Employeer { public $name; function getName() { return $this->name; } function setName($name) { $this->name = $name; } } ?> //test.php <?php // ファイルの読み込み require_once('Employeer.class.php'); // インスタンスの作成 $employeer = new Employeer(); // 社員名のセット $employeer->setName('obt'); // 社員名の取り出し echo $employeer->name; ?>
classの便利さ
$company = array ( 'employeers' => array ( 'employeer' => array ( 'id' => 1, 'name' => 'obt' ), array ( 'id' => 2, 'name' => 'steps' ) ) ); //つまり $company['employeers']['employeer'][1]['name'] = 'steps';
これをclassで表す
- Company.class.php
<?php class Company { //プロパティ private $employeers; //関数名にもアクセス修飾子を。 public function getEmployeers() { return $this->employeers; } public function getEmployeer($name) { foreach ($this->employeers as $employeer) { if ($employeer->getName() == $name) { return $employeer; } } return false; } public function getEmployeerByID($id) { foreach ($this->employeers as $employeer) { if ($employeer->getId() == $id) { return $employeer; } } return false; } public function setEmployeer($employeer_data) { //社員インスタンスを作成 $this->employeers[] = $employeer_data; } } ?>
- Employeer.class.php
<?php class Employeer { //プロパティ(名前) private $id; private $name; public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } } ?>
- company.php(表示)
<?php //ファイル読み込み require_once('Company.class.php'); require_once('Employeer.class.php'); //呼び出し $company = new Company(); /* 今の状態は array(new Employeer(),new Employeer()) */ //// id(1) $employeer = new Employeer(); $employeer->setId(1); $employeer->setName('obt'); $company->setEmployeer($employeer); ////id (2) $employeer = new Employeer(); $employeer->setId(2); $employeer->setName('steps'); $company->setEmployeer($employeer); //var_dumpする。 var_dump($company); ?>
var_dump結果
以下のサイトで実際の結果が閲覧できます。
とりあえずvar_dump
//$company object(Company)#1 (1) { ["employeers:private"]=> array(2) { [0]=> object(Employeer)#2 (2) { ["id:private"]=> int(1) ["name:private"]=> string(3) "obt" } [1]=> object(Employeer)#3 (2) { ["id:private"]=> int(2) ["name:private"]=> string(5) "steps" } } } //$company->getEmployeer('steps') object(Employeer)#3 (2) { ["id:private"]=> int(2) ["name:private"]=> string(5) "steps" } //$company->getEmployeerByID(2) object(Employeer)#3 (2) { ["id:private"]=> int(2) ["name:private"]=> string(5) "steps" }
- 簡単に内容を取り出せるようになった。
- クラスは配列の要素に出来る。
- クラスのプロパティはクラスを増やすことも出来る。