Help us understand the problem. What is going on with this article?

クラス・メソッド・インスタンスの名前を統一してしまうと、インスタンス生成時にメソッドが実行されてしまうバグを、異世界転生モノっぽく説明してみた。

はじめに

クラス構文の動作確認のため、あまりにも適当なテストコードを書いた際に、
とある小さなバグ(?)を発見した。

(くだらない話なので、異世界転生モノ風に語ってみようと思う。)

プロローグ

ボクはどこにでもいる普通の男子高校生。
ある日、道端の猫がトラックに轢かれそうになっていたので身を挺して助けたのだが、
不運にもトラックを避けきれずボクは死んでしまった。猫は逃げた。

気がつくと目の前には女神様がいて、ボクは「ニホン」という異世界を救うために転生させられた。
ニホンは、「ピーエイチピー」と呼ばれる魔法文明を気付いていた。
ボクは女神様から「ブラインドタッチ」というチートスキルを授かったため、この世界で最強のピーエイチピー使い「ペチパー」と呼ばれる賢者を目指し、修行をはじめた。

 (中略)

最終章 バグ(?)との遭遇

ピーエイチピーには「クラス」と呼ばれる強力な魔法があると聞いて、さっそくボクは修行をはじめた。
命名規則とかめんどくさいし、最初は適当に試してみようっと。

PHP
class Hoge {
  private function hoge() {
    echo 'hoge';
  }
}

$hoge = new Hoge();
実行
PHP Fatal error:  Uncaught Error: Call to private Hoge::hoge() from invalid context in…

…あれ?
王立図書館に秘蔵されていた伝説の魔導書「キータ」を参考にして書いてみたのに、なんでうまくいかないんだろう…。
もうちょっと簡単な方法で、試してみるか。

PHP
class Hoge {
  function hoge() {
    echo 'hoge';
  }
}

$hoge = new Hoge();
実行
hoge

…ん?
どうしてfunction hoge()が発動したんだ?
インスタンスを生成したとき、自動的にメソッドを発動させるには、
「コンストラクタ」と呼ばれる特別な制御魔法を使う必要があるハズなのに…。

プルルル…

女神「あ、もしもし少年〜? どしたの?
え? クラスの挙動がおかしい? そんなわけ……… げっ!!
あ、あはは、たしかにちょっぴり個性的な魔法よね!
まあでも、ニホンの常識では、クラスの名前は名詞、メソッドの名前は動詞で名付けるって相場が決まってるから、問題ないでしょ!
応援してるから、頑張って世界を救ってね! それじゃね〜!」

ガチャ。 ツー、ツー、ツー…

おいおい…なんなんだあの女神は?
ちくしょう、結局よくわからないし、ボクは最強のペチパーにはまだまだ程遠いみたいだ。
女神から貰ったブラインドタッチのスキルも、そんなに万能なスキルじゃなさそうだし。これからどうなるんだろう…。
まっ、考えててもしかたないし、もっといっぱい修行して、いつか絶対最強のペチパーになるために頑張るしかないか。

やれやれ。
ボクの異世界生活は、まだまだ先が長そうだ。

 完

作者からのメッセージ

あわわ、こんな駄作に目を通していただいて、誠にありがとうございますっ!
1行で終わってしまう話を、なんとか皆様に楽しんで読んでいただくために、
稚拙ながら精一杯構成を考えさせていただきました!

私の大好きな「異世界転生」作品を、こんな形で世の中に出せることになるとは、思ってもみませんでした!
これからも、作者として、ひとりの読者として、いっぱいいっぱい頑張らせていただきます!

最後にひとこと…
この記事のことが嫌いでも…Qiitaと、異世界転生モノのことは嫌いにならないでください!!!

おわりに

ごめんなさい、ふざけすぎました。

テストコードを書いていた際の不可解な現象をメンター大先生に相談したところ
「(この現象)多分、誰も知らないっすよw」
と、神のようなお言葉をいただいたので、舞い上がって面白記事にしてしまいました。

これからは、真面目にたくさん学習していきたい所存ですので、応援していただければ幸いです。
よろしくお願いいたします。

命名規則はきちんと守りましょうね。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away