Progate PHP学習レッスンⅡ①

こんにちは。
Progateしていきます。
この記事は昨日実施した内容を投稿しています。
本当はもう少しやってから投稿したかったのですが・・・、なんかできなかったので、昨日やった状態で投稿します。
ただの勉強メモですが、誰かが読んでくれていると思うと励みになります。

Progateってなんて意味なんだろ、「Pro」と「gate」で専門家への道的な意味なのかなと思って調べたところ、『Programmingの世界への最初の入り口(Gate)』という意味で社名をつけられたそうです。

『初心者から、創れる人を生み出す』を理念に、村井謙太と二人で株式会社Progateを創業しました。
プログラミングは、人生の可能性を広げてくれる素晴らしい力です。
しかし、多くの人が何からどう始めればいいのかわからず、始める前からつまずいてしまいます。また基礎を身につけたはいいものの、実践に生かせず目標を見失い、あきらめてしまう人も少なくありません。
私たちはそうした課題を解決し、プログラミングの世界への最初の入り口(Gate)となり、創れるようになるまでの最適な道のり(Path)を示したいと考えています。

Progate 私たちのビジョン参照

全然関係ないですが、文章中にリンクを埋め込める機能があることを知って使用してみました。(半導体Times|工学博士@MBA準備中さんありがとうございました。)

『初心者から、創れる人を生み出す』って、まじでカッコいいですよね。
自分は会社に所属して働いていて、間接的に価値を生み出していることに違いないのですが、仕事が細分化されすぎていることもあり、何かを生み出している実感が薄いです。ほんとにこれってやる意味あるのということもありますしね。会社の中で、自分はプログラムでいうところの関数の一つでしかないと感じます。それはそれで他の関数との相互作用もできて楽しいので良いですが、個人でも価値を生み出せる、創造性を拡張できる武器であるプログラミング技術を習得して、小さくても良いので何かを創れるようになりたいです。

今日は、PHPⅡからやります。PHPⅠ 実践道場もあるのですが・・、レベル高そうなので、とりあえず基礎カリキュラムから実施していきたいと思います。

PHP 学習レッスンⅡ

1.目標物を確認しよう

  • 注文料理サイトを作れるようになるっぽい

  • オブジェクト指向はプログラミングの中核をなす概念とのこと。めっちゃ大事

  • オブジェクトは「もの」指向は「方向」でものを中心にしたという概念。デジタル空間で具体的な物質が存在しないから、「もの」を捉えることに重点を置いているということだろうか・・。

  • ECサイトを例にとると商品とかユーザーとか、カートに関するコードをブロックで作ってそう。各属性に対するプログラムを分けることをオブジェクト指向って言っているのかな・・。

  • そうなると連想配列出てきそう。

  • 演習 : とりあえず見本を見るだけ。これまでになく、優しい。優しさに溢れている。

  • 割とリアルな値段設定。

  • 「もの」別に値段と個数があり、注文ボタンがある。各メニューに属性を割り振って、入力された個数を$_POSTに格納して、注文(submit?)する感じなのかな(予想)

  • とりあえず、先に進もう

2. クラスとインスタンス

  • クラスという設計図からオブジェクトを作るよう。

  • とりあえず、クラスは設計図と認識。設計図というからには、箱(名前や個数や値段)を入れる箱を作る感じなのかな。

  • classは<?php class Menu}?>という書き方。配列とは違うのかなぁ。

  • classの中にインスタンスを生成するとのこと。書き方はclassの中に$menu1 = new Menu();みたいな書き方する。インスタンスという実体を作る。このインスタンスの中に具体的な情報を入れてくのか・・。(予想)

  • 演習 : Menuクラスの定義

  • スライド見ながら実施。$curry() : 変数はclass Menu{}の外。勘違いしていた。作る時は$変数 = New クラス名();

  • Classの外にあるということは、Classはほんとに独立した設計図で、何か作りたいときは変数を好きな場所で呼び出せるんだな。きっと。

  • new使うときは小文字

3. プロパティ

  • クラスの設計図の中身を書く

  • クラスにはプロパティとメソッドを持たせる。

  • プロパティは名詞情報(料理名や値段), メソッドには動詞的な要素(関数 : プロパティに書いた情報を取得や合計値計算)を書く。値と関数(名詞と動詞)がセットになっているものがクラス。プロパティでまとめて一つの値にする感じ?

  • まずは、プロパティのお勉強から

  • インスタンス毎に料理名が違うので、それをMenuに登録しておく

  • classの中にpublic $変数; と書く。public使うとプロパティを作ることができるよう。複数作れるの?メソッドは別のコマンドを使う?

  • アロー関数的な(似て非なるもの)が出てきた。->

  • ここではメソッドには触れていない。

  • ややこしいこととしては、nameは変数だからふつうは$nameで書くけど、今回は$使わないで、$ curry ->name ='CURRY'のように書く。

  • 流れとしては、Class内にプロパティ($name)を仕込んでおいて、後で生まれてくるインスタンスにプロパティを持てるように容器を作っておく(public)。実際に何かのインスタンス(この場合$curry)を生成した場合には、空っぽだったプロパティに値を持たせる為、$curry ->name = 'CURRY'と書いて、インスタンスにプロパティを埋め込む。 ->は$curryのname(プロパティ)といい意味ではofみたいな感じか。

  • その後echoでプロパティにアクセスする場合でもecho $curry -> nameのようにnameの前に$は出てこない。

  • もしかして、一行に一個しか$使えないルールとかある?

  • 色々調べてみたが、明確な理由はよくわからず。近しいところでは、インスタンス内の変数はインスタンスとセットで一つの変数のように扱えるとのこと(*1) of的な思考だから、分かりやすく変数を一つにしておこうということだと今は認識しておく。

  • 演習 : publicするときの$nameには()イラナイ

  • $curry = new Menu();でインスタンス起こす時は、これで一端完結させる。そのあと、プロパティ入れる一行を追記する。例のアロー的なもの。$ curry - > name = 'CURRY';

  • {}とかいらない。

  • 演習クリア!

ここで注意したいのは「->」の次の変数名、つまりインスタンス内の変数には「$」は付かないということです。例えば、「$taro->name」で1つの変数のように扱うということです。

PHPの「クラス」と「インスタンス」――「オブジェクト指向」の基礎中の基礎


4. メソッドとは

  • おぉ、そういえばmethodの存在忘れてた。

  • methodの概念難しい。

  • 料金の計算とか、注文件数の取得とかはイメージ沸きやすいけど、料理名の取得とか、料理画像の取得のイメージがわかない。

  • あれかな・・、実際にインスタンスに体を与えている感じかな。画像とか料理名とかだとそんな感じがする。つまり、プロパティだけだと枠(CURRYという概念枠)を決めただけで・・、その中に体を割り振る為の関数みたいな感じなのかなぁ。

  • まぁ、違っているかもしれないけど、とりあえず、この前提でいこう。

  • どうやら、classの中に、public function 関数名(){処理させたいこと}のようになっていそう。

  • プロパティの時がpublicだけだったのに対してfunctionがくっついている。熟語になった感じ。

  • 関数呼び起こす時には、echoしないで、$curry -> 関数名();と使う。->はプロパティだけじゃなく、関数も対象にしているよう。

  • 演習 : 関数の後に()忘れない。実際に使うときはclass内に、個別でプロパティ用の変数 public $name; の後に入れる。プロパティ/メソッドの順番で作る。

  • なるほどー、1回classでメソッドになる関数を定義しておけば、そのあとの個別インスタンスに対して同じ関数で動かせるわけか。確かに便利。Classという親からインスタンスという子供が生まれる感じなのかな。

  • インスタンスって、インスタント(即座に)からきてるのかな。

  • 違った・・、instance(実例だった・・。) 実体化のイメージか。

計算機科学でのインスタンス(instance)とは実体のことをいう。instanceは英語で「実例」を意味する。

インスタンス wiki

5. this

  • これ

  • インスタンスのプロパティやメソッドにアクセスしたい時用の特殊な変数らしい。$this。thisなのに特殊 

  • methodの定義の中(public functionで処理したい内容を記載する時)でしか使えない。確かに、thisが何か分かんなくなるしね。

  • また、結合演算子の.がいる。echo '私の名前は.$this->name.'です。';

  • .$this->name.みたいな使い方する。クラスでパブリックの時は、終始、->name

  • つまり、$thisはこれから設定されるmethodの名前を置き換えている。(呼び出している)

  • 演習一発クリア!

学習範囲 : PHPⅡ 1~5
学習時間 : 11:30 ~12:10 (40分)/14:00 ~ 15:30(1時間30分)
備考 : だんだん難しくなってきている感ある。


この記事が気に入ったらサポートをしてみませんか?