オブジェクト指向を学んでいきましたが、そろそろと中核のことに入っていきます。まずはカプセル化です。
必要以上にclassにアクセスできないようにすることを学習していきます。今までpublic $hogeやpublic function()という風に記述してきました。そのpublicを変えてみます。11月6日記事
目次
アクセス装飾子と呼ばれています。
アクセス装飾子 | 用途 |
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>
Fatal error: Cannot access private property Private_access::$birthday in ファイル名と行数
Fatal error: Cannot access private property Private_access::$birthday in ファイル名と行数
Fatal error: Call to private method Private_access::show() from context '' in ファイル名と号数
publicとprivateの概要について話していきました。これがカプセル化の基本です。隠すものはかくして、呼び出されるものは呼び出す準備のためにpublicをしておくということです。次のPHPでオブジェクト指向入門10~アクセサメソッド(カプセル化)~、なぜそれが必要なのかを考えていきます。
以上