初心者がWordPressテーマを自作できるようになるまでのログ【2021年3月】

プログラミング
Photo by John Hoang on Unsplash

先月はエンジンかかるのが中盤からになってしまったので、ドットインストールのPHP基礎編が終わりませんでした。反省してコンスタントに!

3月の目標

今月はまずPHP基礎編を完了させてから、MySQL基礎編(全27回)の完了を目指します👍

PHP基礎文法編 #26~#34

3/1…「#26 条件演算子を使ってみよう」

「return $total < 0 ? 0 : $total;」と書くと変数totalの値が0より小さい時は0を、そうでない時は変数の値を返す、という意味になる。正直覚えづらい(笑)

「if($total<0){return 0;} else {return $total;}」とif~else文で書いたほうがわかりやすくていいと思った。

3/2…「 #27 引数の型を指定しよう 」

関数を設定する時、入れる引数それぞれが文字列なのか整数なのかといった「型」を指定することができる。

function 関数名(string $変数A , int $変数B){処理内容}

であれば、変数Aには整数、変数Bには整数が入るよ、という指定になる。

PHPではデフォルトとして「弱い型付け」状態となっているので、intを指定した変数に誤って文字列扱いの ‘4’ などを入れてもintとして捉えてくれる。

これを防ぐ「強い型付け」にしたい場合は、関数設定の前に「declare(strict_types=1);」と書いておく。

また、処理内容が「return」など返り値がある場合はその型の指定もできる。変数をいれる()の後ろに「:指定したい型」と書いておく。返り値がない場合は「: void」と書く。

3/3…「#28 nullも渡せるようにしよう」

引数や返り値の型を指定した際、そこにnullが入るとエラーになってしまう。これを防ぐには型の前に「?」を付けて「nullかその型」という意味にする。

現在のPHPでは「文字列か整数か」という指定はできない。

3/4…「#29 配列を使ってみよう」

同じ意味合いの複数のデータを扱いたい時は「配列」を使う。

$scores = [90,40,100];
 echo $scores[1];

とすると、得点となる3つのデータを呼び出したり変えたりできる。ここではインデックス(添字とも言う)を1として呼び出している。インデックスはデータの左から0番目として数えるので40が表示される。

3/5…「#30 配列のキーを指定しよう」

配列の内容を詳しく見たい時は「var_dump()」か「print_r()」を使う。

また配列の値それぞれにアクセスするために割り振られている0~の数字は好きな文字列や数値に変えられる。最初に配列を組む時に「’first’ => 」などと設定してあげればOK。

3/6…「#31 foreachで配列を操作しよう」

配列のすべての要素に処理を実行したい時は「foreach」を使う。

foreach($scores as $score){echo $score .PHP_EOL;}

$scoresの各要素を1個ずつ$scoreに入れた後にそれらを表示する。

キーも表示したい時は()内を「$scores as $key => $score」にすればよい。

3/7…「#32 配列の要素を展開しよう」

配列の中に、別の変数で扱っている配列の要素を入れたい時は「…$別の変数名」とすればOK。また、配列の要素として直接文字列や新たな配列を入れることも可能。配列の中の配列を呼び出したい時は「echo $scores[5][2].PHP.EOL;」などと書けばよい。

3/7…「#33 可変長引数を表現しよう」

その名の通り、引数がいくつ入ってきてもOKな状態。

まず「(…$numbers)」と仮引数を設定する。合計の値を入れる$totalを0にしておく。次に「foreach($numberes as $number)」で$numbersに入ってる配列の要素を一つずつ$numberに入れてあげ、「$total += $number;」として$totalに足していく。最後に$totalをreturnすればOK。

3/7…「#34 複数の返り値を受け取ってみよう」

配列を使うと複数の返り値を受け取れる。「return[$total , $total/count($numbers)];」で合計値と平均値を受け取れる。

これらをそのまま変数にいれることもできる。

[$sum,$average] = getStats(1,3,5);

MySQL入門 基礎編 #1~

3/8…「#01 MySQLを使ってみよう」

MySQLはデータ管理のシステム。ユーザーデータを集計したり分析したりできる。派生した「MriaDB」というシステムを使って勉強していく。

#2はドットインストールでの操作説明なので視聴のみ。

3/9…「#03 データベース用語を確認しよう」

MySQLは表で管理していく。表をテーブル、横の「行」をrecord、縦の「列」をcolumnと呼ぶ。表、行や列に名前を付け、データを入れていく。MySQLで予め用意されている命令などは大文字で、自分で付けていく表の名前などは小文字で書く。

CREATE TABLE テーブル名(列見出し名① , 列見出し名②);

INSERT INTO
 テーブル名(列見出し名① , 列見出し名②)
VALUES
 (‘hello!’,22);

3/10…「#04 テーブルを作ってみよう」

「CREATE TABLE テーブル名(カラム名①,カラム名②)でテーブルを作り、「DESC テーブル名」で表の内容確認、「SHOW TABLES」で表を表示。

お手本通りに書いてもエラーになる。QA見ると同様の質問が出ており回答は「次のレッスンで解説してますので見てください」。なんじゃそりゃ(笑)

3/10…「#05 レコードを挿入しよう」

エラーを回避するには最初に「DROP TABLE IF EXISTS テーブル名」と書いておく。

表にレコードを入れるのは「INSERT INTO テーブル名(カラム名①,カラム名②) VALUES(データ①,データ②),(データ③,データ④)…」

入れたレコードを確認するには「SELECT * FROM テーブル名;」

3/13…「#06 エラーメッセージを読み解こう」

間違えて実行すると英語がワシャっと出てくるが、焦らず読むと「line○のYouのsyntax、errorあるよ!」と教えてくれている。○行目の構文の中に間違ってるところがあるよということ。

さらに「’~~~~’の近くで正しい構文を使うためにマニュアルをチェックしてみ」と教えてくれてるので、’~~~~’の前後の入力を確認する。

3/13…「#07 データ型を見ていこう」

整数のデータ型はTINYINT,INT,BIGINT。扱える整数の幅に違いがあるが大抵はINT(-21億~+21億)で済む。またマイナス値を扱う必要がない時はINTのデータ型の後ろに「UNSIGNED」を付けると範囲をプラス域に全振りできる(INTなら0~42億)ので覚えておく。

実数のデータ型は固定小数点のDECIMALを使うことが多い。(浮動小数点はFLOAT、DOUBLE(高精度))

文字列のデータ型は~255文字ならCHAR、~65535文字ならVARCHAR、それ以上ならTEXT。

真偽値のデータ型はBOOL。PHPの仕様上、TRUEを1、FALSEを0としているので実質はTINYINT(1)と同義だったりする。

日時のデータ型は、日付ならDATE、時間ならTIME、日時ならDATETIMEでOK。

#08 数値、文字列を扱ってみよう」は以上の入力編なので省略。

3/14…「#09 ENUM型を扱ってみよう」

ENUM型(読み:えなむがた)は特定の文字列の中から1つだけ格納できる型。

category ENUM(‘Gadget’, ‘Game’, ‘Business’)

としておく場合、表にデータをINSERTする時に、3つのどれかを指定でき、それ以外だとエラーになる。インデックス番号でも指定できるが0でなく1から始まるので注意。

3/16…「#10 SET型を扱ってみよう」

ENUM型は1つしか選べなかったがSET型にすると複数選べる。(この際、カラム名も複数形にする、カンマで区切る、空白は入れない)

こちらも数値で表現できる。左から2のべき乗が当て込まれているので1,2,4…となる。これらを足した数値を入れる。

3/17…「#11 真偽値、日時を扱ってみよう」

真偽値BOOLは、例えば下書きかどうかを示す項目として「is_draft」という名前にしてtrueかfalse(もしくは1か0)を入れる。

日時DATETIMEは例えば「created」という項目名にして「2021-03-17 10:05:00」などと入れる。時刻を入れないと「00:00:00」になり、今現在の日時を入れたい時は「NOW()」とする。

3/18…「#12 NULLの扱いを見ていこう」

2つあるカラムのうち、1つにだけレコードを入れた時、もう1つには何もないという意味の「NULL」が自動で入る。

これをNULLではなくerrorにしたいという時はそのカラムのデータ型の後ろに「NOT NULL」を付けておく。もしくは自動で「0」としたい時は「DEFAULT 0」を付けておけばOK。

3/19…「#13 値に制限をつけてみよう」

CHECKで値の範囲を設定し、あてはまらない場合エラーにできる。例えば「CHECK( likes >=0 AND likes<=100)」でいいねを0~100に指定できる。

またUNIQUEを付けておくと重複してる場合エラーにできる。

3/21…「#14 主キーを設定してみよう」

主キーとは重複なく識別できるようにするためんい付与しておくもの。社員番号や商品番号のようなもの。

id INT NUT NULL AUTO_INCREMENT,
PRIMARY KEY (id)

これで、idにNULLでない整数という型を設定し、更に「AUTO_INCREMET」で自動で連番を振れるようにできる。

3/21…「#15 SELECTでデータを抽出しよう」

SELECT * FROM posts;

「*」は全てのカラムという意味。ここは特定のカラム名だけにしてもよい。また抽出条件を付けたい時は後ろに「WHERE likes >=10」や「WHERE message = ‘~~~’」を付ける。

「!=」「<>」はどちらも「等しくない」の意味。馴染みないので覚えておこう。

3/23…「#16 条件を組み合わせてみよう」

複数の条件を組み合わせて抽出できる。「◎以上◎以下」ならばANDで条件を繋げてもいいが「BETWEEN 10 AND 20」と書いてもいい。BETWEENの前にNOTを入れて条件をひっくり返ることもできる。

ORで繋げた条件は「IN(◎,◎)」と書くこともでき、これもNOTでひっくり返せる。

3/25…「#17 LIKEと%で文字列を抽出しよう」

SELECT * FROM posts WHERE message LIKE ‘t%’

で「t」から始まるメッセージを持つレコードを抽出できる。大文字か小文字か選別したい時はLIKEの後ろに「BINARY」を付ける。「%su」で「suで終わる」、「%i%」で「iを含む」とできる。

3/27…「#18 LIKEと_で文字列を抽出しよう」

「_」は任意の1文字を、「%」は0文字以上の任意の文字を指す。「’__a%’」とすると「3文字目がaになっているレコード」を指せる。また「_」や「%」を文字として含むレコードを抽出したい場合は、「\_」「\%」というふうにバックスラッシュを使う。

次回…「#19 NULLのレコードを抽出しよう」

タイトルとURLをコピーしました