トップページ
Laravel学習サイトLaravelやるばい

目次

Laravelをやるのに必要なPHPのクラスの最低限の内容

今回はLaravelをやる上で最低限必要なPHPのクラスについての知識です。

Laravelで開発をする上でクラスは絶対に避けて通ることができません。

Progateやドットインストールを使えばPHPの基本を知ることはできますがLaravelに使う場合にどこまで知ってないといけないかは分かりません。

それを解説しているネット上の情報もありません。

だから私がLaravelで開発をする上で必要と思うPHPの知識について説明します。

今回の記事の内容を押さえればクラスを使う上で問題ないと思います。


クラス・インスタンス・プロパティ・メソッド

まずはこの3つを知らないといけません。

ロボットの例で説明します。

クラスはロボットを作るための設計図です。

設計図があるとロボットを作ることができますが設計図を基に作ったロボットをインスタンスと言います。

作ったロボットですが男性型・女性型などの性質と掃除するなど何ができるかが分かりません。

性質のことをプロパティ(またはメンバ変数と言います)・何ができるかをメソッドと言います。

20250221_112421_class1.jpg

次は記述について説明します。


クラスの作成

クラスの書き方は下記になります。

<?php
  class Robot{
  
  }
?>

「class クラス名{ }」でクラスを作成することができます。

ロボットで説明しているのでクラス名を「Robot」にしています。

クラス名を書く時は一番最初の文字を大文字にします。


インスタンスの作成

クラスを作ってからインスタンスを作成します。

コードを下記にしますがインスタンスの記述はクラスの外に書きます。

<?php
  class Robot{

  }

  new Robot();
?>

「new クラス名」でインスタンスを作成することができます。


プロパティの作成

プロパティの書き方は「private  $プロパティ名」としクラスの中に書きます。

<?php
  class Robbot{
    private $gender;

  }

  new Robbot();
?>

プロパティ名の前にある「private」をアクセス修飾子と言って「public」・「private」・「protected」の3つがあります。

役割は下記になります。

protectedに関してはひとまず知らなくても問題ないと思うので説明を省きます。

プロパティを呼び出してみます。

呼び出す時は下記の記述をします。

インタンス->プロパティ

生のPHPになりますが具体的な記述をすると下記になります。

<?php
  class Robot{
    public $gender;
  }
  
  $robot = new Robot();
  $robot -> gender = "男性型ロボット";
  echo $robot -> gender;
?>

「public $gender」でプロパティを用意します。

この時点ではプロパティの値が空っぽですが「$robbot->gender = "男性型ロボット";」でプロパティに「男性型ロボット」が設定されます。

プロパティを呼び出す時は「$gender」の「$」を取ります。


メソッドの作成

メソッドはクラスの中に記述します。

呼び出す時は下記の記述をします。

インスタンス->メソッド

具体的な記述をすると下記になります。

<?php
  class Robot{
    public function bring(){
      echo "荷物を運びます";
    }
  }
  $robbot = new Robbot();
  $robbot -> bring();  
?>

「public function bring」の記述がメソッドです。

publicはプロパティの時と同じでアクセス修飾子です。

publicにするとクラスの外からも呼び出しができますが他とバッティングして意図しない動作をするかもしれないので基本的にprivateにした方がいいです。

そう言われてもピンと来ないかもしれないので慣れるまではpublicでやって意図しない動作を見つけたらprivateに切り替えるでいいと思います。


$this

Laravelでよく使います。

PHPの学習を私はprogateでしていますが$thisの意味がよく分かりませんでした。

使う場面は以下になります。

プロパティを呼び出す時は「インスタンス->プロパティ」と記述すると説明しましたがメソッドの中ではこれができず「$this->プロパティ」と記述しないといけません。

つまり$thisはインスタンスの代わりになります。

具体的な記述をすると下記になります。

<?php
  class Robbot{
    public $gender;
    
    public function publication(){
      echo "私は".$this -> gender."です";
  }
  
  $robbot = new Robbot();
  $robbot -> gender = "男性型ロボット";
  $robbot -> publication();
?>

publicationメソッドで$thisを使っています。

この記述で「私は男性型ロボットです」と表示されます。


コンストラクタ

これもLaravelでよく使います。

コンストラクタはインスタンスを生成した時に動作するメソッドです。

下記の記述をします。

<?php
  class Robot{  
    public function __construct(){ 
      echo "私は男性型ロボットです";
    }
  }
  
  new Robot();
?>

メソッドがコンストラクタの時のメソッド名は「__construct」(「_」は2つ付ける)です。

コンストラクタに引数を使うこともできます。

例えば下記の記述です。

<?php
  class Robot{
    public function __construct($gender){
      echo "私は".$gender."です";
    }
  }
  
  new Robot("男性型ロボット");
?>

インスタンスを生成する時に引数(男性型ロボット)を記述してそれをコンストラクタで使っています。

インスタンスを生成する時に使った引数を「本引数」とも言います。

またコンストラクタに使っている引数($gender)を「仮引数」とも言います。


クラスメソッド

クラスを考えている時のメソッドはインスタンスから呼び出すことで使えます。

しかしクラスメソッドを使うとインスタンスがなくても呼び出すことができます。

これもLaravelでよく使います。

下記の記述をします。

<?php
    class DemoClass {
        public static function demo() {
            return "デモです";
        }
    }

    echo DemoClass::demo();

記述はfunctionの前に「static」を付ければいいです。

メソッドを呼び出す時は「クラス::メソッド」(「DemoClass::demo( )」のこと)と記述すればいいです。

これ位ができればクラスに関してはとりあえず大丈夫だと思います。

戻る