56
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【PHP】アロー演算子→とスコープ定義演算子::

Last updated at Posted at 2019-10-26

PHPの学習メモ
※勉強中のため、間違いがあればご指摘お願いいたします。

PHPを勉強してて->とか::が出てきていまいちよく分からなかったので、意味、使い道を調べました。

#アロー演算子(->)
クラスのメソッドやプロパティにアクセスするための演算子。
左辺から右辺を取り出します。

###1、プロパティにアクセス
下記では、Menuクラスのインスタンスにcoffeeがあり、
nameにLatteを代入します。$coffee->nameで「coffeeのname」にアクセスできます。

<?php
class Menu{
  public $name;
}

$coffee = new Menu();
$coffee->name = 'Latte';

echo $coffee->name; //Latte
?>

###2、メソッドにアクセス

<?php
Class Menu{
  public $name;

  public function message(){
    echo '当店オススメの一品です';
  }
}

$coffee = new Menu();
$coffee->name = 'Latte';
$coffee->message(); //当店オススメの一品です
?>

###$this->
メソッド内でインスタンスのプロパティやメソッドにアクセスしたいときは、$thisを使います。
例えば、下記では$this->nameでnameにアクセスしています。nameは何かと言うとLatteでした。

<?php
Class Menu{
  public $name;

  public function message(){
    echo $this->name.'は当店オススメの一品です';
    //Latteは当店オススメの一品です
  }
}

$coffee = new Menu();
$coffee->name = 'Latte';
?>

#スコープ定義演算子(::)
クラスの定数や静的なメソッドにアクセスする演算子。
定数は変更しない固定の値のこと。静的なメソッドは全てのインスタンスに共通して使える、またはインスタンスがなくても使えるメソッド(staticメソッド)。

<?php
Class Menu{
//定数を定義(消費税は10%で固定)
  public static function tax_rate(){
     return 1.1
  }
}

$menu = Menu::tax_rate();
echo $menu;
?>

※厳密には軽減税率で8%の場合もありますが、今回は便宜上10%とさせてもらってます。

###parent::で継承関係にある親のメソッドを子インスタンスが呼び出す。

<?php
// ドリンククラス
class Drink{
  public $name;

// 作成メソッド
  function create($name){
    $this->name = $name;
  }

// オーダーメソッド
  function order(){
    echo "オーダー承りました [name]".$this->name;
  }
}

// ドリンククラスを継承したデザートクラス(子クラス)
class Dessert extends Drink{
  // 子クラス用のオーダーメソッド
  function order(){
    // 親クラスのorder()を呼び出す
  parent::order();
   echo "オーダー承りました";
  }
}

$dess = new Dessert();
$dess->create("デザート");
$dess->order();

?>

###self::
クラス内でクラスプロパティにアクセスする際にはselfという変数を使う。

<?php
class Drink{

  private $name;
  private $price;
  private $orderCount = 0;

  private static $count = 0;

  public function __construct($name, $price){
    $this->name = $name;
    $this->price = $price;

    self::$count++;
  }

  public function order(){
    echo $this->name.'のオーダー承りました';
  }

  public function getOrderCount(){
    return $this->orderCount
  }
}
?>
56
52
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
56
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?