ヤマカサのプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

PHP 学習 part. 7

クラスとオブジェクト

クラスとオブジェクトの続きです。

self

self キーワードはクラス内では、自身のクラスを示すことになります。

<?php

class Box
{
    public static $name = "箱";

    public function getName()
    {
        return self::$name;
    }
}

$box = new Box();
echo $box->getName(), PHP_EOL;

const

const キーワードをつけてクラス定数を定義します。クラス定数は、クラスの初期化時に用いられた李、オプションとして利用されます。

<?php

class Drink
{
    const SMALL = 100;
    const REGULAR = 150;
    const BIG = 250;
}

echo Drink::BIG, PHP_EOL;

static メソッド

静的なメソッドはインスタンスを生成せずに利用できます。

<?php

class Math
{
    public static function add($v1, $v2)
    {
        return $v1 + $v2;
    }
}

$x = Math::add(4, 7);
echo $x, PHP_EOL;

コンストラク

コンストラクタはインスタンス生成時に必要なパラメータを設定するために利用されます。

<?php

class Book
{
    private $title;
    private $author;
    const COMPANY = "技術評論社";
    // コンストラクタ
    public function __construct($title, $author)
    {
        $this->title = $title;
        $this->author = $author;
    }

    public function toString()
    {
        return $this->title . " " . $this->author;
    }
}

$book = new Book("パーフェクトPHP", "小川");
echo $book->toString(), PHP_EOL;

parent

クラスを継承した時に親クラスのコンストラクタを呼び出すために、parent キーワードを使います。

<?php
class Animal
{
    public $type;
    public function __construct($type)
    {
        $this->type = $type;
    }

    public function getType()
    {
        return $this->type;
    }
}

class Dog extends Animal
{
    private $name;
    public function __construct($name, $type)
    {
        parent::__construct($type);
        $this->name = $name;
    }

    public function hello()
    {
        echo "ワン!", PHP_EOL;
    }

}

$dog = new Dog("犬", "哺乳類");
echo $dog->getType(), PHP_EOL; // 哺乳類
$dog->hello(); // ワン!

パーフェクトPHP

パーフェクトPHP