#contents

* 命名規則 [#o23d5b97]
** クラス [#md834e7b]

- 半角英字のみ利用可能
- [_]はパスの区切りもとしてだけ利用可能
- 単語の最初も文字は大文字
- ファイル名も従う

例: Zend_Pdf
&color(red,クラス名の例: Zend_Pdf);~
&color(red,ファイル名の例: Zend/Pdf.php);

** 関数とメソッド [#r7aff179]

- 半角英字のみ利用可能
- 最初の文字は小文字、単語の最初の文字は大文字
- できるだけ省略しないようにする
- デザインパターンを使用する場合はデザインパターン名を含むようにする

&color(red,関数名の例: filterInput());

** 変数 [#a307e949]

- 半角英字のみ利用可能
- 最初の文字は小文字、単語の最初の文字は大文字
- できるだけ省略しないようにする
- private,protectedいずれかのアクセス修飾子を宣言する変数は[_]で始める

** 定数 [#k182b15d]

- 半角英数字と[_]利用可能
- 全ての文字は大文字、単語の区切りは[_]とする
- constで宣言する

&color(red,定数名の例: EMBED_SUPPRESS_EMBED_EXCEPTION);

* クラスの基礎 [#s88b4149]

** コンストラクタ [#a2021155]
クラスをインスタンス化する際に最初に実行されるメソッド「__construct」で固定

 <?php
 class MyClass {
   public function __construct() {
     echo("MyClassをインスタンス化");
   }
 }
 
 $objCls = new MyClass();
 ?>

** デストラクタ [#k504ac92]
オブジェクトが破棄される際に実行されるメソッド「__destruct」で固定

 <?php
 class MyClass {
   public function __destruct() {
     echo("MyClassを破棄");
   }
 
   public function myMethod() {
     echo("myMethodを実行<br>");
   }
 }
 
 $objCls = new MyClass();
 $objCls->myMethod();
 ?>

** アクセス修飾子 [#d112db0a]

|CENTER:BGCOLOR(#CCCCCC):修飾子|CENTER:BGCOLOR(#CCCCCC):概要|
|public|全てのクラスからアクセス可能(デフォルト)|
|protected|現在のクラスと現在のクラスを継承したサブクラスからのみアクセス可能|
|private|現在のクラスからのみアクセス可能|

** final修飾子 [#t969bf9a]
クラスの継承やメソッドのオーバーライド(上書き)を禁止する~
class,function の直前に書く

** オーバーロード [#n63a1d02]
オーバーライドとは異なる~
未定義のプロパティ、メソッド、クラスに対応する

*** プロパティのオーバーロード [#u8faa9e8]

- __set : 未定義のプロパティに値が設定されるときに自動的に実行されるメソッド~
引数はプロパティ名($name)と値($value)
- __get : 未定義のプロパティの値を取得されるときに自動的に実行されるメソッド~
引数はプロパティ名($namer)で、値を返す必要がある

*** メソッドのオーバーロード [#rc53231d]

未定義のメソッドが実行されるとFATAL ERRORになるが、これを__callメソッドで処理することができる~
引数はメソッド名($method)とメソッドの引数が含まれる配列($args)

*** クラスのオーバーロード [#uc82a761]

未定義のクラスのオブジェクトを作成するとFATAL ERRORになるが、これを__autoload関数で処理することができる~
引数はクラス名($name)

** 静的プロパティとメソッド [#i6920727]

*** 静的プロパティ [#d1600dcd]

通常プロパティはオブジェクトごとに異なる変数として扱われるが、static宣言をすると同一クラス内で共有される

クラス内で参照する場合: self::プロパティ名~
クラス外で参照する場合: クラス名::プロパティ名

*** スタティックメソッド [#s1d4b9de]

クラス外から静的にコールするためのメソッド~
static宣言をする

クラス内で参照する場合: self::メソッド名~
クラス外で参照する場合: クラス名::メソッド名

** 抽象メソッドとクラス [#jc1bce2e]

*** 抽象メソッド [#u49ead28]

functionの直前にabstract宣言をすると下位クラスにおいて実装することを強制できる

*** 抽象クラス [#he005636]

classの直前にabstract宣言をすると直接インスタンスを生成することを禁止できる

** インターフェース [#g6d337d2]

複数のクラスを継承したい場合にインターフェースを持つクラスを定義することで可能となる~
インターフェースはクラスのメソッド名や引数のみ定義する

 interface MyMail
 {
   function sendMail($to);
 }

インターフェースを利用するクラスではimplementsを使用する

 class MyNewShop extends MyShop implements MyMail
 {
   function sendMail($to)
   {
     //
   }
 }


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS