@blog.justoneplanet.info

日々勉強

PHP Class Constants and Static Members(クラス定数と静的メンバ)

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

PHP5では、以下のようにstaticキーワードを使って静的なメソッドとプロパティを定義できる。

<?php
class Dog {
    public static function bark(){
        print('bow!');
    }
}
Dog::bark();//bow!
?>

staticで宣言したメソッドやプロパティは個々のオブジェクトでなくクラスに属する。クラス内外から呼び出す際には、スコープ演算子「::」を用いて「クラス名::メンバ名」という記述をする。この時に演算子「->」を使用するのは文法上誤りである。また、自身のクラス内から静的メンバを呼び出すには、以下のようにキーワード「self」を用いる。

<?php
class Dog {
    public static function bark(){
        print('bow!');
    }
    public static function appeal($thing){
        print("$thing");
        self::bark();
    }    
}
Dog::appeal('Give me feeds!');//Give me feeds!bow!
?>

クラス設計について

staticなメンバだけのクラスを設計することもできる。

  • オブジェクト指向の本来の意義からかけ離れていないか注意
  • 機能のパッケージングという点から見ると有効

■クラス定数

  • クラス定義時に値が決められ、後から変更はできない
  • クラス内部で使用する定数値を、名前でスコープ外に公開することを目的とする
  • スカラー値限定

クラス定数を定義するには以下のようにキーワードconstを用いる。また、クラス外部からアクセスするには、スコープ演算子「::」を用いる。

<?php
class Dog {
    const VOICE = 'Bow!';
}
print(Dog::VOICE);//Bow!
?>

以下のように、PDOのエラー表示などの設定でも使われているようだ。これによって上手にパッケージ化することができている。

<?php
try{
    $dsn = 'mysql:host=localhost;dbname=dbname';
    $dbh = new PDO($dsn, DB_USER, DB_PASS);
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
    //code
}
?>

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment