masayuki5160's diary

名古屋でエンジニアしてます。

クラスとオブジェクトの勉強1

パーフェクトPHP (PERFECT SERIES 3)

新品価格
¥3,771から
(2017/3/19 15:36時点)

これを参考にクラスとオブジェクトについて勉強したのでそのまとめを。


クラスを定義してインスタンス化してみる


<?php
/*PHPでクラスを使用してみる*/

/*クラスの定義*/
class Employee
{
/*メソッドの定義*/
public function work()
{
echo "書類を整理しています",PHP_EOL;
}
}

/*new演算子を用いてEmployeeクラスのインスタンス化*/
$yamada = new Employee();

/*Employeeクラスのメソッドを使用*/
$yamada->work();
?>

PHP_EOLは改行コード。
http://netapeta.sblo.jp/article/3672979.html

上記のように、クラスを使うときにはnew演算子をもちいてクラスをインスタンス化。




アクセス修飾子
メソッドやプロパティがどこからアクセス可能かを表す修飾子。
ちなみに、、
メソッドとは、そのクラスのもつある機能をひとまとめにしたクラスの中の関数。
(クラスの中で定義されてる関数てこと)
プロパティとは、クラスの中で保持している変数のこと。

アクセス修飾子は、
public   クラスの外側からアクセスできる
private   クラスの中からのみアクセスできる
protected クラスの中から、または自分のクラスを継承したクラスの中からのみアクセスできる

の3つ。



<?php
/*PHPでクラスを使用してみる*/
/*アクセス修飾子とプロパティについて(public編)*/
class Employee
{
public $name; //従業員の名前を表すプロパティ
public $state = "働いている"; //従業員の状態を表すプロパティ

public function work()
{
echo "書類を整理しています",PHP_EOL;
}
}

/*Employeeクラスをインスタンス化する*/
$tanaka = new Employee();

/*nameプロパティに値をセット(publicだからクラスの外部からもアクセス可能)*/
$tanaka -> name = "田中";

echo $tanaka->state,$tanaka->name,"さん<br>";
$tanaka->work();
?>

上記はname、stateプロパティをpublicとして外部からもアクセスできるようにした場合。
次に下記のように、
stateプロパティをprivateとして宣言すると、
クラスの外部からはアクセスできなくなる。


<?php
/*PHPでクラスを使用してみる*/
/*アクセス修飾子とプロパティについて(public,private編)*/
class Employee
{
public $name; //従業員の名前を表すプロパティ
private $state = "働いている"; //従業員の状態を表すプロパティ

public function work()
{
echo "書類を整理しています",PHP_EOL;
}
}

/*Employeeクラスをインスタンス化する*/
$tanaka = new Employee();

/*nameプロパティに値をセット(publicだからクラスの外部からもアクセス可能)*/
$tanaka -> name = "田中";

/*stateプロパティはprivateだからクラスの外からアクセスできない*/
echo $tanaka->state;

echo $tanaka->name,"さん<br>";
$tanaka->work();
?>


とりあえずここまで。