LoginSignup
1
1

More than 5 years have passed since last update.

PHPとRubyを比較してクラスついて理解する_100DaysOfCodeチャレンジ25日目(Day_25:#100DaysOfCode)

Posted at

はじめに

この記事はTwitterで人気のハッシュタグ#100DaysOfCodeをつけて、
100日間プログラミング学習を続けるチャレンジに挑戦した25日目の記録です。

動作環境

  • PHP 7.1.16 (cli)
  • Ruby 2.4.1p111 (2017-03-22 revision 58053)

本日学んだこと

  • selfとクラスメソッド

selfとクラスメソッドについて

クラスの中でselfを使うことで、文字通り自分自身を表すことができます。

また、selfはクラスメソッドを定義するときにも使われます。

クラスメソッドとは、クラスが生成するインスタンスとは関連のないメソッドを作りたいときに定義するメソッドのこと。

PHPの場合、クラスプロパティを作成した後にゲッターによってクラスメソッドを呼びだし、Rubyではクラス名.クラスメソッドの形式で呼び出します。

以下の例では、PHPとRubyでインスタンスが生成される度に、生成されたインスタンスの数を数えるcountというクラスメソッドを実装しています。

class Animal {
  private static $count = 0;
  public function __construct($kind) {
    $this->kind = $kind;
    self::$count++;
   }
  public function getCount() {
    return self::$count; //selfはAnimalを表している
  }
}
//ここから下はクラスの外部
$penguin = new Animal('キングペンギン');
echo Animal::getCount(); //クラスメソッドの呼び出し。1が返ってくる。
class Animal

  def initialize(kind)
    @kind = kind
    if defined?(@@count) # @@countはクラス変数(クラスから生成された全てのインスタンスから参照できる変数)
      @@count += 1
    else
      @@count = 1
    end
  end

  def self.count
    @@count
  end
end

count_animal = Animal.new('キングペンギン')
p Animal.count
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1