LoginSignup
0
0

More than 1 year has passed since last update.

【PHP】アクセス権について

Posted at

アクセス修飾子とは

プログラム上で変数やメソッドが同名として重複しないように、
変数や関数の有効範囲をするもの。とのことです。

アクセス修飾子の使い分け・種類

public

クラス内、外関係どこからでもアクセス可能

public.php
<?php

class Myclass {
  public $public = 'public';

  public function printhello() {
    echo $this->public;
  }
}

$obj = new Myclass;
echo $obj->public; //プロパティの呼び出し
echo $obj->printhello(); //メソッドの呼び出し

//=> public public 

protected

そのクラスと継承先クラスからアクセスが可能

protected.php
<?php

class Myclass {
  protected $protected = 'protected';

  public function printhello() {
    echo $this->protected;
  }
}

class Myclass2 extends Myclass {
  public function printhello2() {
    echo $this->protected;
  }
}

$obj = new Myclass2;
echo $obj->protected;
echo $obj->printhello2();

// =>
// Fatal error: Uncaught Error: Cannot access protected property Myclass2::$protected in /var/www/html/php2/47/C.php:18 Stack trace: #0 {main} thrown in /var/www/html/php2/47/C.php on line 18
// protected

private

そのクラスからのみアクセス可能

private.php
<?php

class Myclass {
  private $private = 'private';

  public function printhello() {
    echo $this->private;
  }
}

$obj = new Myclass;
echo $obj->private; //呼び出せない
echo $obj->printhello(); //呼び出せる

// =>
// Fatal error: Uncaught Error: Cannot access private property Myclass::$private in /var/www/html/php2/47/B.php:12 Stack trace: #0 {main} thrown in /var/www/html/php2/47/B.php on line 12
// private

0
0
1

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
0
0