Do not live to eat!

PHPをProgateで勉強したことのまとめ

飼っている海水魚が病気になったり、仕事が忙しくて帰る時間が遅かったりであまり勉強捗っておらず、Progateもそろそろ2ヶ月目に突入まであと4日。
とても勉強しやすくて良いサービスですが、WordPressのテーマ作成をするという意味では最後にPHPをやっておけば一通り勉強できたはずなので、残り4日でPHPもやってしまいます。
そしたら一旦休学して、また勉強したい言語が出てきた時にProgateで勉強しようかなと。

というわけで、PHPをProgateで学んだまとめです。
これまで学んできた言語の中で最も解説が多く、内容も一番充実していたように感じました。

PHP Ⅰ

いきなり4時間コースでした。
本当に4日で全部終えられるのだろかと焦りながら受講しましたが、プログラミングの基本は既にある程度押さえられていたので、2.5hくらいで終わりました。
内容的にはPHPの基本的な書式や使い方を一通り勉強して、最後にHTMLでフォームを作って、PHPで処理するというところまでやります。

PHP Ⅱ

こちらも3.5hとわりと長めに見積もられていますが、2時間くらいで終わりました。
オブジェクト指向な内容が存分に含まれていて、今までやってきた内容には無かったクラスやインスタンスの話、カプセル化の話なんかまででてきます。
でもどれも難しく書いてあるわけではないので、オブジェクト指向が初めてでもきっとわかりやすいはず。(僕はにわか経験者でしたが、なんとなくわかったような気になっていた基本的なところがようやく理解できました!)

PHP Ⅲ

2.5hのコースで、1.5hかからないくらいでした。
引き続きオブジェクト指向で、クラスの継承がメインの内容です。

PHP Ⅳ

PHP最後のコースで3.5h見込みでしたが、実際は2hかからないかなってくらいでした。たぶん実践寄りの内容でメモを取るというよりは体感するという感じが強いコースだったからだと思います。
複数のクラスが出てきたりしてかなり頭が混乱しますが、トレーニングという意味ではとても充実していたと思います。

PHPの基本

文法

基本的な文法は以下の通りで、<?php から始まって ?> で終わる。
コメントは//で、各処理の後にはセミコロンを付ける。

変数

$ を付けて変数名を定義するだけ。
変数名の命名規則的には英語にすることと、2語目以降は大文字開始にする。

配列

配列は以下のように定義する。

連想配列

ほとんど配列と変わらないが、配列とは違ってインデックス番号は使われず、代わりにキーを指定する。

if文

if文の書式は以下。
特にこれといって特殊なところはない。

switch文

switch文の書式は以下。

for文

for文の書式は以下のとおり。
特にfor文だけではないけれど、breakでループを抜けるし、continueならループは抜けずにその周だけスキップできる。

while文

while文の書式は以下の通り。

foreach文

配列から1つずつ取り出して処理する。
書式は以下の通り。

関数

定義方法は以下の通り。

メソッド

strlen

文字数を返す。

count

要素の数を返す。

rand

ランダムな数を返す。

instanceof

特定のインスタンスかどうかを判定するメソッド。

クラスとインスタンス

オブジェクト指向の話。クラス定義は以下の書式になる。
クラス名は大文字スタート。

コンストラクタ

インスタンスを生成した時に必ず実行されるメソッドのこと。
phpでのコンストラクタの定義は以下のとおり。

require_once

phpファイルを分割した場合に、分割ファイルを読み込む時に使う。
たとえば、index.phpで分割したdata.phpを読み込むには以下のようにする。

カプセル化

というタイトルの項目だったけれど、内容的にはpublicにするのか、privateにするのかなど。
プロパティは基本的にprivateにする。

そして、外部からプロパティを使用したいときのために、プロパティの値を返すだけのメソッド(ゲッター)を用意する。
逆に値を設定するためだけのメソッド(セッター)も用意する。

クラスプロパティ

インスタンスが持つプロパティではなく、クラスとして持つプロパティのことで、例えばインスタンス数などはクラスプロパティとして用意すべきもの。
定義方法は簡単でstaticを付けるだけ。ただ、使い方は他と少し違って、クラス名::$クラスプロパティ名とする。

プロパティと同じだが、クラスメソッドというのもあって、こちらも同じような使い方にになる。

クラスの継承

親のクラスをベースに、個別に定義死体内容があったときなどに親クラスを継承した子クラスを作る。
子クラスのインスタンスでも親クラスのコンストラクタやメソッド、プロパティが使える。
定義の仕方は、<子クラス名> extends <親クラス名>

子クラスで独自のプロパティやメソッドを用意することができる。
親クラスのインスタンスからこれらを呼び出すことはできない。
同じ名前のメソッドなどがあった場合は、子クラスが優先される。
でも親クラスでprivateになっているものは、子クラスからでも呼び出せない。
子クラスからはアクセスできるようにしたければ、privateではなくてprotectedにする。

オーバーライド

親クラスと子クラスで同名のメソッド(コンストラクタも)があると、子クラスが優先される。
これをオーバーライドというが、親クラスの内容をそのまま使いつつ、ちょこっと変えたい時には以下のようにparent::メソッド名を使って継承する。

その他

フォームで受け取った情報を処理する

HTML(php)でユーザーがフォームに入力した情報を処理する。
受け取ったデータは $_POSTに含まれており、連想配列になっている。
連想配列のキーは、フォーム側で指定したname属性の値になっている。

クエリ情報

aタグのhrefでphpファイルを指定した時、どこのリンクから飛んできたのかわからなくなってしまうので、URLの末尾の?以降にクエリ情報を入れてアクセスするようにする。
クエリ情報を受取るときは$_GETを使用する。(使い方は$_POSTみたいな感じ)

Let's share this article!