こんにちは。
すこし更新期間が開いてしまいました。今年はがんばって更新頻度を上げたいと思っています。
PHPさわってみる企画の続きです。テーマはクラスとオブジェクト。
今回も基礎ではありますが自分的にはなかなかの難関だと思ってます。
最初に注意書き
この記事は初心者による日記であり、知識人による講座的なものではありません。間違いを言っている場合があります。
オブジェクトはJavaScript企画で取りあげたことがあります。
たぶんこの時の説明のように値や関数をまとめたものって感じの理解でいいんじゃないかな(雑)。
PHPの場合、一旦クラスというオブジェクトの設計図のようなものを作ります。
前回、関数を飲食店のセットメニューに例えたので店舗メニューとしてまとめてみましょう。
<?php
class TenpoMenu{private $setdrink;
private function __construct($setdrink) {
$this->setdrink = $setdrink;
}function curreyset() {
echo "注文はカレーセット、ドリンクは" . $this->setdrink . "です。" . "<br>";
}function steakset() {
echo "注文はステーキセット、ドリンクは" . $this->setdrink . "です。" . "<br>";
}}
$TenpoMenu = new TenpoMenu('オレンジジュース');
$TenpoMenu->curreyset();?>
実行結果↓

"class TenpoMenu{" というところから最後の"}"までがクラスです。前回やった関数が入っているのがわかると思います。
(function curreyset()とfunction steakset())
"private $setdrink" のところはクラス内で使う変数の宣言です。この変数のことをプロパティなどと言ったりします。インスタンス変数とか他の呼び方もあるようです。
setdrinkがプロパティ名ですが、その前の"private"のところはアクセス修飾子と言って適用範囲を定めるものです。
基本private にしてクラス内のみの使用とします。このときsetdrinkという変数はクラス外から呼び出すことはできず、言い換えればsetdrinkという名前の変数を別物として使用することができます。外でも使う場合はpubilcと書きます。
pvirte function__construct($setdrink){ のところはコンストラクタと言ってクラス内で最初に実行される場所となります。
例ではsetdrinkというプロパティに引数のsetdrinkを代入しています。
(プロパティと引数が同じ名前なので説明が分かりにくいかもしれませんがこう書くのがスタンダードなようです。)
ここまでがクラスの中身。
その下でクラスのcurreysetメソッド(関数)を実行しているのですが、$TenpoMenu = new TenpoMenu('オレンジジュース')のところでオブジェクトを作成しています。
クラス内のメソッドを実行するにはまずオブジェクトを作成するっていう処理が必要になります。
ここでは設計図であったクラスのTenpoMenuを実体化しオブジェクトの$TenpoMenuを作成したってことになります。インスタンス化と言ったりするようです。
用語がたくさん出てきますがこういうのをおさえておくとAIに細かい指示を出したりするときに短い文章で正確に伝えられるので有利な気がします。
で、$TenpoMenu->curreyset(); でcurreysetメソッドの実行。steaksetは実行していないので表示されるのはカレーセットだけ。
メソッド内で$this->setdrinkと書いてますが$thisっていうのがこのクラス内のっていう意味として使うようです。このへんも難しいですね。
いちおうメモ書き貼っておきます。

今回はここまで。ありがとうございました。カレーよりはステーキたべたいな。


こちらは上のらくがきをnanoBanana先生に仕上げてもらい、それをGrok先生に動画にしてもらったものです。絵柄はだいぶ変わってますがいろいろとすごく参考になります…(・o・)
ちなみに生成AIにラフを仕上げてもらう場合、カゲやハイライトを入れた状態で渡すと線がラフであっても仕上げてくれないことが多いのでベタ塗りまでのものを仕上げてもらうのがいいです。(・∀・)b