8月 302011
 

phpはインターフェースも使用できます。
インターフェースはクラスに実装しなければ使用できません。
インターフェースDatainterfaceを抽象クラスUserへ実装し、
抽象クラスUserの中でメソッドadd、getを具体的に記述します。
また、抽象クラス内のメソッドprint_hello()は、
継承したサブクラスMemberのなかでオーバーライドして具体的に記述します。

<?php
interface Datainterface
{
 public function add($key,$data);
 public function get($key);
}

abstract class User implements Datainterface {
 private $array = array();
 abstract protected function print_hello();
 
 public function add($key,$data){
  $this->array[$key] = $data;
 }
 
 public function get($key){
  return $this->array[$key] ;
 }
}

class Member extends User{
 public function print_hello(){
  print “会員:ログイン中<br />”;
  print $this->get(“name”) ;
  print “さん、こんにちは!<br />”;
 }
}

$member = new Member();
$member->add(‘name’,”ユーザー”);
$member->print_hello();

?>

8月 262011
 

php5から抽象クラスというものが追加されました。
abstractをつけてクラス定義しますが、
抽象クラスではメソッドの具体的処理は記述できません。
必ず継承したサブクラスの中でオーバーライドして処理を記述する約束です。
抽象クラスUserのメソッドprint_hello()には何も記載せず、
継承したクラスGuestでオーバーライドしてprint_hello()を記述します。
クラスGuestを使用する場合には、
必ずnew演算子でインスタンスを生成して使用します。

<?php
abstract class User {
 protected $name = NULL;
 abstract protected function print_hello();
}
class Guest extends User{
 protected $name = “ゲスト”;
 public function print_hello(){
 print $this->name;
 print “さん。はじめまして。”;
 }
}

$newuser = new Guest();
$newuser->print_hello();

?>

8月 232011
 

今回はオブジェクト指向言語の特徴の中で最も重要なクラスの継承です。
クラスUserを定義しておき、そのクラスUserを継承(インヘリタンス)して
新たなクラスGuestを作成します。
クラスUserの中で定義した関数print_hello()を、
クラスGuestの中で上書き(オーバーライド)し、同じ名前の関数を実行しても
別の実行結果になるように出来ます。
ここで、継承されるクラスUserをスーパークラス
継承したクラスGuestをサブクラスと呼びます。

<?php
$newuser = new Guest();
$newuser->print_hello();

class User {
 private $name = NULL;

 public function print_hello(){
  print $this->name;
  print “さん、こんにちは!”;
 }
}

class Guest extends User {
 private $name = “ゲスト”;

 public function print_hello(){
  print $this->name;
  print “さん、はじめまして!”;
 }
}
?>

8月 202011
 

プログラム言語の分類方法にhがいくつかありますが、
phpはJava、C++、Ruby、Javascript、Actionscriptと同じく、
オブジェクト指向言語に分類されています。
オブジェクト指向言語の特徴の中から、クラスの作成、クラスの継承、
抽象クラスの作成、インターフェースの実装例をまとめます。
クラスの定義の仕方はユーザー定義関数と良く似ていますが、
クラスを使用するにはnew演算子を使ってインスタンスを生成する必要があります。
また、クラス内で定義した関数を使用する場合も、
これまでと少し表記方法が異なるため注意が必要です。

<?php
$newuser = new User();
$newuser->print_hello();

class User {
 public $name = “ユーザー”;

 public function print_hello(){
  print $this->name;
  print “さん、こんにちは!”;
 }
}
?>

クラスの作成