23
26

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 5 years have passed since last update.

【PHP】public,private変数の使い方とアクセス方法

Last updated at Posted at 2013-12-20

こんにちは。

まず、なぜprivateでpublicはクラス内でほとんど使わないのか。
雑誌を読んで結構理解が深まりました。

鍵をかけないと周りから見られるから。

こんな感じで書いてあることが多いですが、僕なりに一番納得したのは
ほかの方がそのメソッド(変数も?)を呼べないようにするため。

例えば統合開発環境を利用した際、補完機能で「.」を押すと候補がでてきますが
privateメソッドにしておくと候補として表示されなくなります。
あぁ、確かに同じような名前のメソッドが候補でたくさん出てくると
困るなぁというのがしっくりきました。

まず正常な動作をするソース

<?php
class Calendar{
  
  private $year;

  public function __construct($y){
    $this->year = $y;
  }

  public function get_info(){
    return $this -> year ;
  }

}

$test = new Calendar(2013);
echo $test->get_info(); //2013
?>

privateで定義された$yearが、

public function __construct($y){
$this->year = $y;
}

public function get_info(){
return $this -> year ;
}

ここでアクセスされていますが、これは同一クラス内であり
$this -> を利用することでアクセスが可能になります。

同一クラス外

<?php
class Calendar{
  
  private $year;
}

$test  = new Clendar(2013) ;
echo $test -> year ;

とやるとエラーで返ってきます。

また同様に

<?php
class Calendar{
  
  private $year;

  public function __construct($y){
    $this->year = $y;
  }

  private function get_info(){
    return $this -> year ;
  }

}

$test = new Calendar(2013);
echo $test->get_info(); //エラー
?>

とやっても、Calendarクラスをnewしたところで
get_info()関数がprivateになっているのでエラーで返ってきます。

よし、なんだかつかめてきてうれしくなっております。
(実務レベルに早くとうたつしたい~)

それではこれからもよろしくお願いいたします。

23
26
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
23
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?