大規模なPHPプログラムでは必須になってくる Class なのですが、
今ひとつピンとこないので基礎からおさらいしてみようと思います。
クラスはプロパティ(メンバ変数)とメソッド(メンバ関数)を持ち、
複数の関数をひとつのグループにまとめることができます。
メンバ変数はクラス内のメンバ関数で共有して利用できる変数で、
アクセス権によって3種類に分類されます。
「public」はクラスの中でも外でも利用できます。
具体的には下記のように使います。
<?php class Test{ public $foo = 123; } $test = new Test(); echo $test->foo;
「private」はそのクラス内でしか利用できません。
上のソースの public を private に変えてみるとエラーが出るのがわかります。
private は次のように用います。
<?php class Test{ private $foo = 123; function abc(){ echo $this->foo; } } $test = new Test(); $test->abc();
「$this」って何?と思われるかもしれませんが、これはオブジェクト自身を指す変数です。
「echo $foo;」のようにはできないので気をつけて下さい。
3つ目は「protected」です。
こちらもクラス内でしか使えませんが、継承した子クラスからはアクセスできる権限です。
<?php class Test{ protected $foo = 123; } class Example extends Test { function abc(){ echo $this->foo; } } $example = new Example(); $example->abc();
子クラスは「class 子クラス名 extends 親クラス {}」の形で定義します
子クラスは親クラスのすべてのメソッドを受け継ぐ(継承)ので、子クラスの中でも
親クラスで定義したメソッドを利用できます。
「protected」は子クラスからでもアクセスできるのに対して、
「private」はそのクラス内でしか利用できないので、上のソースを「private」に
書き換えるとエラーが発生します。
Similar Posts:
- [PHP]マジックメソッドを使ったアクセサ(__get, __set)
- [PHP]よくあるエラーメッセージの原因と対処法 2
- [PHP]クラスのプライベートなプロパティやメソッドに外部からアクセスする
- [PHP]Laravelのビューで@includeしているパーツに値を渡す(View Composers)
- [PHP]同じ名前のファイルが存在するときは番号(連番)を付ける
- [PHP]よくあるエラーメッセージの原因と対処法 1
- [PHP]Symfonyを使ったメールフォームの作り方
- [PHP]ZipArchiveクラスを使ったファイルのZip圧縮と展開(解凍)