2011年5月4日水曜日

PHPクラスメモ

●PHPでクラスをつくるメモ

はっきり言ってしまうと, Java の書き方に非常によく似ている。

- 定義
class class_name
{
}

- アクセス
private, protected, public

- this
$this

- クローン(値コピーの生成)
clone  インスタンス名

- 親クラスへのアクセス      これだけ大きく違うかも
parent::

-抽象クラス
abstract

-  インタフェース
interface

といったように, Java とよく似た部分が多い。
本では, サンプルなどを動作させる方法や, ファイルの分け方などないので
メモしておく。

----------------------------------------------------------
サンプル
ファイル名   AKB48.php      親クラス
                    No3b.php        サブクラス
                    classTest.php   テスト用

・動作方法
これらのサンプルを同一フォルダ(ディレクトリ内に入れ)
コンソール(Windows ならコマンドプロンプトで)
おそらくXAMPPインストール時に, PHPエンジンのパスはとおっているはず,
気になるようでしたら,
php -v  を実行してみてください。(バージョン情報の表示)


php classTest.php

でO.K.

・動作確認
Window 7  64bit   PHPはXAMPPでインストールしたもの

----------------------------------------------------------

AKB.php
<?php
     class AKB
    {
         private $name;
         private $team;
         
         const MEMBER = 48;               // 定数定義
         
          public static $akb = "AKB48";       //  static 変数

         public function __construct( $name )    // コンストラクタ
         { 
                $this->name = $name; 
          }

         public function work()  
         { 
                 print "AKBがやってきた\n"; 
          }
          
          public function getName()               // getter
         { 
                  print($this->name . "\n");
          }
         
          public function setName( $name )     // setter
         {   
              $this->name = $name; 
          }
          
          public function getGroup()    // static 変数の参照
          { 
                return self::$akb; 
           }
           
           public static function greet() 
          { 
                print ("こんにちは!\n");  
           }
     }
?>

No3b.php
<?php
    class No3b extends AKB
    {
               private $song;

               public function __construct($name, $song)    // コンストラクタ
              { 
                    parent::__construct($name);               // 親クラスのコンストラクタ呼び出し
                    $this->song = $song;  
               }
                
               public function work()                    // Override
               { 
                     print "No3bがやってきた\n"; 
               }
                
               public function printSong()  
              { 
                     print ($this->song . "\n"); 
              }
       }
?>

classTest.php

<?php
    require 'AKB.php';                 //  AKBクラスを呼ぶ
    require 'No3b.php';                //  No3bクラスを呼ぶ
     
    $mayuyu = new AKB("まゆゆ");
    $mayuyu2 = clone $mayuyu;                 //  クローンを作った
    $mayuyu2->setName("渡辺麻友");     //   クローンを変更
    $mayuyu->getName();
    $mayuyu2->getName();
    $mayuyu->work();
     $nyaro = new No3b("こじはる", "ハート型ウイルス");     //  サブクラスをつくる
     $nyaro->printSong();
    $nyaro->work();                      //  サブクラスでoverrideした関数の呼び出し
     AKB::greet();                          //  static 関数の呼び出し
?>
実行結果
まゆゆ
渡辺麻友
AKBがやってきた
ハート型ウイルス
No3bがやってきた
こんにちは!

0 件のコメント:

コメントを投稿