PHPのアクセス権 public protected private static

PHP7 yum インストール 高速 実行速度 2倍

 

残念ながら私は毎日業務でプログラムを書いているわけではないので、色々やっているうちに忘れてしまう危険があります・・・!!そんなわけで、プログラム系もぼちぼち記事にしていこうと思います。

今回はPHPのアクセス権を記事にします。

 

アクセス修飾子って何もの?

プログラム上で変数やメソッドが同名として重複しないように、変数や関数の有効範囲を指定するもの。複数人で開発する場合とても便利な機能です。かぶって処理があったらバグになってしまいます!

 

//アクセス権がわかるとクラスが理解出来て、クラスが分かった上でMVCモデルの概要を知ると、フレームワークやCMSの構造がわかってきます。また、アクセス修飾子と似たようなもので、namespaceという記述の名前空間を使ってディレクトリのようにも管理が出来ます。

アクセス修飾子の使い分け

public > protected > private

publicの範囲が最も大きい。
例外でstaticというものもあります。

public

クラス内、クラス外関係どこからでもアクセスが可能です。

protected

そのクラスと継承先クラスからアクセスが可能です。

private

そのクラスからのみアクセス可能です。

関数に関してそのクラスで処理が終わるものとか、チェック系のメソッドはprivate functionで良いです。

Static

クラス指定すれば、インスタンスを生成せずにどこからでも使える。

ほぼ関数!

初期化されない特性があるので、シングルトンパターンに使ったりします。

使い分け

  • 継承される元となるクラスのメンバ変数・メソッドはprotected
  • そのクラスで処理が済むメンバ変数・メソッドはprivate

privateで済むものに関してはなるべくprivateを使うとクラス内で秘匿化出来て良いですね!

逆にメンバ変数に対してpublic $hogehoge としてしまうとクラスを使う意味が薄れてしまいます。

 

プログラマは2度同じ処理を書かない。

2度書くことになった同じ処理はクラスや関数にする原則を忘れずに実行すること。そうすれば1箇所を修正すれば共通した処理を修正できるので保守性が向上する。

例えば税率、ソースに直接1.08など記述してしまった場合は、税率変更の度にアプリケーション上のすべての税の記述を探し出して修正することになりますね、恐ろしい。そこで定数や関数にしておくと、1箇所修正すれば良くなるわけです。

 

継承

また、関数をクラスという集まりにしておくと同じような処理をする時や、似た処理をする時に継承機能がとても便利です。

サイヤ人クラス(エネルギー弾, 尻尾)
↓(継承)
スーパーサイヤ人クラス(エネルギー弾, 尻尾, 惑星を吹き飛ばす)

こんな感じ。

また、アクセス修飾子privateを使えば、この関数は継承させない!といった事も可能になります。

 

書いてみた

お買い物をする処理を書いてみました。

みかんを買いますよ!

予算、商品名、価格をRegisterクラスに入れて内部で決済処理を行う流れにします。

public, protected, private, staticのアクセス修飾子を使ってクラスを作っていきます。

 

実行結果

あなたの予算:500円
みかんの値段:108円(税込)


残金は392円です。

 

プログラムはパズルのようでおもしろいですね!

Pythonのライブラリで何か作ったりとか記事にしていけたらと思います。

 

PHPプログラム関連

優 (エンジニア)

この記事を書いた人:優 (エンジニア)

システムガーディアン爆弾処理班。アクセス負荷対策やNginxへの移行案件が多いこの頃。IBM SoftLayerやAWSなどクラウド案件も多くなってきました。

この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166