こんにちは!
ナビゲータのEVEです。
ブログを書く方法として、大きく分けて2つあります。
1つは、前調べをきちんとしてから目的をもって、ブログを書く方法・・・。
もう一つは、なんか、疑問があり、その疑問を解決するために、調べながらブログを書く方法・・・。
どちらも、知識を整理し、後で見返すことができるというメリットがあります。前者は、結論を予め決めて書き出すのですが、後者は、最初どんな結末になるのか全く分かりません。そんな後者ですが、普段だったら、深掘りするのは面倒くさいようなものまで、詳細に調べることができるというメリットがあります。だから、このブログでは、後者の書き方を多用します。ただ、2024年10月15日の「システムエンジニアが目指す中小企業診断士」は、おかしな内容になってしまいました。
まっ、そんなこともあるのですが、本日も後者の方法で、PHPプログラミングについて書きます。
[独習PHP第4版]
本日は、PHPのクラスメソッドについてまず最初にかきましょう!Javaは自分が整理した資料を読み直してみましたが、それにより思い出すことができました。しかし、PHPは、オブジェクト指向言語としてプログラミングするのは初めてですし、その中でクラスメソッド、静的メソッドがあるなんてことも、つい先日知りました。多分、Javaと同じじゃないかなとは思うのですが、想像でプログラミングするわけにはいけないので、以前購入した、「独習PHP第4版」から同記述を探したいと思います。
価格:3740円 |
よく考えたら、最初必要な所だけ斜め読みしてから忘れていましたが、頁を開くのは久しぶりです。なぜそのようなことになっているかというと、ほぼ理解できているということもありますが、AIの力が大きいでしょう!ただ、AIもときどきおかしい回答をすることもあり、総合的な言語知識は必要不可欠だと思われます。これを、機会にまた本を読み直したいと思います。
この本ページ総数641頁です。全部読んでからプログラミングするのは時間がかかるので、必要なところだけ斜め読みしてシステムを開発したのですが、ここにきて、本の重要性を再認識しています。
[クラスメソッド]
では、早速例を見て行きましょう!以下は、ChatGPTに御願いして作ってもらったClassです。
class MyClass {
public static $staticVar = 'Hello, World!';
public static function staticMethod() {
return 'This is a static method.';
}
}
echo MyClass::$staticVar; // 'Hello, World!'と出力
echo MyClass::staticMethod(); // 'This is a static method.'と出力
ここで背筋に凍るようなものを感じたのは、静的プロパティ・・・。これ、オブジェクト指向言語で書き始めた頃、多用していましたね・・・。理由は、変数の意味を明確にしたかったから・・・。そのため、メソッド内で定義した変数はstaticをつけて定義をしていました。それが実は、静的プロパティとして利用しようとしていたとは・・・。
変数は、クラス内で自由に参照するのはいいのですが、それ以外から閲覧するのは正直問題ありと考えています。そのため、メンバー変数は私が作るプログラムではすべてprivateです。Javaだとpublic static void main()なんて記述でよく見ますが、現在すべての言語非常に似ていると言うことを再認識しないといけないようです。
現在は、すべて書き換えているのですが、無知とは怖いモノです。
ちなみに、今まで、メンバー変数をクラス変数と言った言い方をしましたが、Javaだと、クラス変数とは静的プロパティを指します。PHPでは、クラス変数=静的プロパティではないらしいですが、以降は、メンバー変数という言い方をします。ただ、クラス定数という言葉もあり、これは、Java、PHPとも同じ意味で使用され、メンバー変数とともに記述される定数です。JavaScriptと同様に、const で宣言します。そろそろ、頭が混乱してきました(笑)。
なお、以上の例ですが、使い方は、Javaとあまり変わりがないようです。
[あとがき]
調べ始めて思いましたが、やはり、きちんと本を読み直した方が良いようです。「独習PHP第4版」は最後まで読めていないので、初めて読む章もあります。まず、最初ざっと読み、知識として不足してそうなところを深掘りするスタイルで学習を進めたいと思います。
AIをサポーターとして利用するのはいいのですが、AI主体で作るプログラミングの危険性を近頃感じています。お互い気をつけましょう!
では、また!!!