オブジェクト指向を学んでいきましたが、そろそろと中核のことに入っていきます。まずはカプセル化です。 必要以上にclassにアクセスできないようにすることを学習していきます。今までpublic $hogeやpublic function()という風に記述してきました。そのpublicを変えてみます。11月6日記事

目次



publicはアクセス装飾子と呼ばれる

アクセス装飾子と呼ばれています。

アクセス装飾子 用途
public どこからでもアクセスできる。
private 現在のクラスの中でのみアクセスできる。
protected 現在のclassとサブクラスでのみアクセスできる。

それではpublicで作った場合とprivateで作った場合を見ていきましょう。

コード

PHPでは一つのクラスは一つのファイルに記述するのが一般的で、クラス名.phpが基本です。二つ書いていますがあまりよくない例です。実行結果だけ見ていきます。
Access.php

<?php

/*アクセス装飾子*/

class Public_access{/*こっちはpublic*/
	public $name;
	
	public function show(){
		print "私の名前は{$this->name}です。";
	}
}

class Private_access{/*以下の2つをprivateをpublicに直したり、片一方をpublicに直したりしてエラーを出してみてください。*/
	private $birthday;

	private function show(){
		print "私の誕生日は{$this->birthday}です。";
	}
	
}

index.php

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>アクセス装飾子</title>
</head>
<body>
<?php
require '../class/Access.php';

$n = new Public_access();
$n->name = '山田太郎';
$n->show();

print "<br>";

$b = new Private_access();
$b->birthday = '2000年1月1日';
$b->show();

?>
</body>
</html>



結果(誕生日側のクラス)

二つをprivateにした場合

Fatal error: Cannot access private property Private_access::$birthday in ファイル名と行数

上をprivate下をpublicにした場合

Fatal error: Cannot access private property Private_access::$birthday in ファイル名と行数

上をpublic下をprivateにした場合

Fatal error: Call to private method Private_access::show() from context '' in ファイル名と号数



まとめ

publicとprivateの概要について話していきました。これがカプセル化の基本です。隠すものはかくして、呼び出されるものは呼び出す準備のためにpublicをしておくということです。次のPHPでオブジェクト指向入門10~アクセサメソッド(カプセル化)~、なぜそれが必要なのかを考えていきます。

以上

最終更新:2015年11月09日 00:34