命名規則

クラス

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

クラス名の例: Zend_Pdf
ファイル名の例: Zend/Pdf.php

関数とメソッド

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

関数名の例: filterInput()

変数

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

定数

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

定数名の例: EMBED_SUPPRESS_EMBED_EXCEPTION

クラスの基礎

コンストラクタ

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

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

$objCls = new MyClass();
?>

デストラクタ

オブジェクトが破棄される際に実行されるメソッド「__destruct」で固定

<?php
class MyClass {
  public function __destruct() {
    echo("MyClassを破棄");
  }

  public function myMethod() {
    echo("myMethodを実行<br>");
  }
}

$objCls = new MyClass();
$objCls->myMethod();
?>

アクセス修飾子

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

final修飾子

クラスの継承やメソッドのオーバーライド(上書き)を禁止する
class,function の直前に書く

オーバーロード

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

プロパティのオーバーロード

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

メソッドのオーバーロード

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

クラスのオーバーロード

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

静的プロパティとメソッド

静的プロパティ

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

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

スタティックメソッド

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

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

抽象メソッドとクラス

抽象メソッド

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

抽象クラス

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

インターフェース

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

interface MyMail
{
  function sendMail($to);
}

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

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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-19 (日) 19:09:34