こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPのprivate関数について

PHPのアクセス修飾子privateについてお聞きします。
以下のようなコードを書いて実行したら、エラーメッセージが出ました。
code:
<?php

class Super {
protected function protectedFunc(){
echo "original-Protected\n\r";
}
private function privateFunc(){
echo "Private\n\r";
}

public function publicFunc(){
privateFunc();
}
}
$super = new Super;
$super->publicFunc();
?>
error message:
Fatal error: Uncaught Error: Call to undefined function privateFunc() in C:\xampp\htdocs\HTML_practice\protected-practice.php:12 Stack trace: #0 C:\xampp\htdocs\HTML_practice\protected-practice.php(17): Super->publicFunc() #1 {main} thrown in C:\xampp\htdocs\HTML_practice\protected-practice.php on line 12

line12 というのは、public 関数であるpublicFunc() の内側で、private関数のprivateFunc() を使おうとした部分ですが、private関数はクラス定義の中だから使えるというのは間違った認識でしょうか? だとするとprivate関数はいつどんな時に使えるのでしょうか?
どなたか例を挙げて説明頂けないでしょうか?
宜しくお願いいたします。

投稿日時 - 2020-07-05 08:21:45

QNo.9768717

困ってます

質問者が選んだベストアンサー

public function publicFunc(){
$this->privateFunc();
}

と書かなければいけません。
$this は自分自身のインスタンスを表す疑似変数です。
「$this->」が無いのでグローバル関数のprivateFunc()を探したけど見つからずエラーになっています。

投稿日時 - 2020-07-05 10:05:15

お礼

早速にご回答を頂きまして、有難うございます。
そうですよね。私も習ったはずなのにすっかり忘れていました。
privateFunc()はあくまでもクラスのメンバーメソッドなので、オブジェクトのメンバーとして呼び出さないといけないわけですよね。
これですっきりしました。private修飾子を付けたメンバーでも、そのクラス内であれば使えるということを確認できました。

投稿日時 - 2020-07-05 11:19:54

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問