こんにちは。
まず、なぜ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になっているのでエラーで返ってきます。
よし、なんだかつかめてきてうれしくなっております。
(実務レベルに早くとうたつしたい~)
それではこれからもよろしくお願いいたします。