PHP クラスの使い方の基本まとめ

Pocket

復習としてPHPのクラスの使い方、書き方をまとめておこうと思います。プロパティへのアクセスの仕方などjavascriptと書き方が少し違っているのでそこらへんもしっかり復習しておきたいところです。

PHP クラスの書き方使い方

クラスの書き方は基本的には他の言語と同じ。プロパティを宣言して、メソッドを書いていきます。また、クラス名の一文字目は大文字で。

<?php

//クラスの書き方
class MyClass
{
    //プロパティ
    $var1='var1';   //デフォルト値を設定
    $var2;

    const WIDTH_X=300;  //定数

    //メソッド
    function method(){
        $var2=var1;
        echo $var2;
    }

    //thisを使って自身のプロパティにアクセス
    function getVar(){
        return $this->var1;

}



//クラスの使い方
$class=new MyClass();  //クラスのインタンス化
echo $class->var1;     //プロパティへのアクセス

echo $class::WIDTH_X;  //定数へのアクセス

$class->method();    //メソッドへのアクセス

echo $class->getVar();
?>

PHP アクセス権

PHPのクラスではアクセス権をつけることで外部からのアクセスを制御します。また、staticをつけることでインスタンス化することなくプロパティやメソッドを使うことができます。

<?php
class MyClass
{
    //プロパティ
    public $var1;     //クラス外部からアクセス可能
    private $var2;    //クラス内部からのみアクセス可能
    protected $var3;  //クラス内部、継承したクラス内部からアクセス可能

    public static $var4;  //インスタンス化せずに使用可能


    //メソッド
    public function getVar(){
        return $var1;
    }

    public static function getVar2(){
        return $var2;
    }
}


$class=new MyClass();
echo $class->var1;  //アクセス可能
echo $class->var2;  //アクセス不可能

echo MyClass::var4;  //インスタンス化せずに使える

echo MyClass::getVar2();  //クラス内部からのアクセスになる

?>

PHP コンストラクタ

コンストラクタはクラスがインスタンス化された時に呼び出されるメソッドです。プロパティへの値のセットなど初期化のためのメソッドです。

<?php
class MyClass
{
    private $var1;
    private $var2;

    //コンストラクタでプロパティの初期化
    public function __construct($var1,$var2){
        $this->var1=$var1;
        $this->var2=$var2;
    }
}


//インスタンス化するときに値をセット
$class=new MyClass(1,2);

?>

PHP 継承とオーバーライド

継承は他のクラスの機能を引き継いで新しいクラスを作ることで、引き継ぎ元を親(スーパー)クラス、継承したクラスを小(サブ)クラスと呼びます。例えば全ての動物に共通する機能を「動物クラス」で定義し、それを継承して「犬クラス」を作るという感じです。

オーバーライドは親クラスで定義したプロパティやメソッドを小クラスで上書きすることです。メソッドの引数は親クラスと同じにする必要があります(コンストラクタはOK)。

<?php
//クラスの継承の書き方
class SubClass extends MyClass
{
    //親クラスのprivate以外のプロパティ、メソッドにアクセス可能


    //オーバーライド
    public function method($var1){  //引数は合わせる
        //親クラスのメソッドを書き換え可能
    }
}
?>

PHP 名前空間の使い方

名前空間とはクラス名、関数名、定数名の衝突をさけるためのディレクトリのようなものです。長いクラス名をつける必要はなく、ライブラリなどで使われる名前と被っても名前空間を分けておけば良いというこですね。

<?php
//名前空間の定義
namespace Pc\Mac;

class Macbook{}


//アクセス方法
require_once 'Macbook.php';

$mypc=new Pc\Mac\Macbook();



//同じ名前空間で使用する場合は省略できる
namespace Pc\Mac;

$mypc=new Macbook();
?>

まとめ

ここまでで基本編終了。あとはコード書きながら、いろいろ作りながら勉強していくことになります。PHPはマニュアルもしっかりしているので初心者にも入りやすい言語ですね。

本格的に勉強するならこちらの書籍がおすすめ。初心者でも非常にわかりやすくまとめられています。