【学習39日目】ProgateでPHPを学習した話

コーディング

こんにちは。U235です。

今日はProgateでPHPの学習をしました。

Progateとはプログラミングのオンライン学習サービスです。
無料でも最初の方の勉強はできますが、以降は月額1,490円で学び放題となっています。

プラスの学習も最初の5日間はお試しで無料となっていて、5日間のうちにHTML・CSSの全コースとCommand Lineを履修、その後有料会員になりましてJavaScript(ES5)、jQuery、Saasを履修して今に至ります。

いまWEBCOACHではWEBデザインのWordPressについてを勉強中なのですが、応用編としてオリジナルスキンを開発しよう!そのためにはPHPを学習してねってことで。

学んで印象に残ったこと、疑問に残ったことなどを備忘録として残しておこうと思います。
全部終わったけどぶっちゃけ半分もわかってないと思う。これを書きながら少し振り返ってみる。

PHP I(学習レッスン・道場レッスン)

  • 今までホームページを作成するにあたり、ページ.html、スタイルシート.css、JavaScript(jQuery).jsの3種類を使っていたが、PHPを使用する場合はページ.htmlがページ.phpになる。
  • というわけでHTMLとPHPは同じファイルに記述していく。PHPの内容は<?php ~ ?>で囲う。
  • PHPを使うと見る人によって表示する内容を変えられる。
    例えば……フォームで「名前:Aさん」「内容:こんにちは」という内容が送信されたとき、送信完了画面で送信された内容を表示することができる。
  • JavaScriptと似ている部分が多い。けど微妙に違う。
  • JavaScriptで苦戦したFizzBuzzもスムーズにクリア。良かった。
  • 学習時間は学習レッスンが1:15、道場レッスンが0:32。

PHPとJavaScriptの微妙な違い

似てる。けど違う。気づいたもの・調べたものをまとめました。

出力の方法

PHPは「echo」、JavaScriptは「console.log()」。

echo 'こんにちは';

echoはエコー。えちょじゃない。でもえちょって読んでる(良くない)。

echoのあとに半角スペースが必要。忘れたことはないけど忘れないように注意っていろんな媒体に書いてあった。
どっちかっていうと;を忘れちゃう。んでよくエラー起こしてる。

console.log("こんにちは");

こんそーるろぐって何?って感じです……。

やってることは同じなのになんでこんな違うねん。言語が違うから?統一してくれたらわかりやすいんだけど……。

まあこれは明らかに違うからまだいい。問題はほとんど一緒なのにちょっと違うやつらだよ。

変数

PHPは「$」、JavaScriptは「var」。

$name = 'Bob';
echo $name;
// 結果:Bob

$name = 'John';
echo $name; // 変数nameの更新
// 結果:John

PHPは「$変数名=値;」で定義する。変数の値を更新するときは「$変数名=新しい値;」とする。
後で使うときも$はつける。

var name = "Bob";
console.log(name);
// 結果:Bob

name = "John"
console.log(name); // 変数nameの更新
// 結果:John

JavaScriptは「var 変数名=値;」で定義する。varはvariable(変数)から来てるはず。

変数の値を更新するときはvarはつけずに「変数名=新しい値;」とする。
後で使うときもvarはつけない。最初の定義のときだけ。

jQueryを使うときは$がつく。これはjQueryだよ~の目印に、たまたま空いてた$が使われたってだけらしい。けど紛らわしい!

文字列の結合

PHPは「.」で、JavaScriptは「+」で。文字は「’」で囲う、変数は囲わないっていうのは一緒。

$name = 'Bob';
echo 'こんにちは、'.$name.'さん';
// 結果:こんにちは、Bobさん
var name = 'Bob';
console.log("こんにちは、" + name + "さん");
// 結果:こんにちは、Bobさん

.は小さいし、結合ってどんどん足してくことだから+のほうがしっくりくるんですが、どうでしょう。
なんとなくjQueryのメソッドチェーンみたいな感覚でやれたけど。

配列に値を追加するとき

PHPでは「$変数[]=新しい値;」、JavaScriptでは「変数.push(新しい値);」。

$names = array('Bob', 'John', 'Taro');
$names[] = 'Hanako'; // 一番後ろにHanakoを追加
echo $names[3];
// 結果:Hanako

Array(アレ↑イ)は配列って意味。

var names = ["Bob", "John", "Taro"];
names.push("Hanako"); // 一番後ろにHanakoを追加
console.log(names[3]);
// 結果:Hanako

console.log(names);
// 結果:['Bob','John','Taro','Hanako']

一番前が0番目(インデックス番号)というのはJavaScriptと一緒。
インデックス番号を[]で囲うのも一緒。

あとJavaScriptは配列全部を出力することができるけど、PHPはできないみたいです。

連想配列の書き方

PHPはarray(‘キー1’ => ‘値1’, ‘キー2’ => ‘値2’ )、JavaScriptは{“キー1″:”値1”, “キー2″:”値2”}。

$user = array('name'=>'Bob', 'age'=>15, 'gender'=>'male');

PHPは=>とか->とか矢印っぽいのをよく使うよね。=と-の違いもやめてくれよと思うんだけど……。

var user = {"name":"Bob", "age":15, "gender":"male"};

配列は[]で囲ってたけど連想配列は{}で囲う。PHPはどっちもarray()でわかりやすい。

if文の条件分岐(else)の書き方

PHPは「elseif」、JavaScriptは「else if」。

$age = 30;
if ($age >= 65){
echo '老年人口';
}elseif ($age >= 15){
echo '生産年齢人口';
}else{
echo '年少人口';
// 結果:生産年齢人口

調べたところ、上記のように{}で書くときは「else if」でも通るらしい。
しかし、コロン(:)とendifを使って書くときはスペースを入れてしまうとエラーになってしまうそう。
だから{}のときもelseifで統一しちゃったほうがいいと思う。

var age = 30;
if (age >= 65){
console.log("老年人口");
}else if ($age >= 15){
console.log("生産年齢人口");
}else{
console.log("年少人口");
// 結果:生産年齢人口

ほとんど一緒だけど、こっちはスペースを空けて「else if」。

PHP II

  • オブジェクト指向という考え方が出てくる。
  • クラス、メソッド、インスタンス、プロパティ、コンストラクタ……横文字がたくさん出てきてわからなくなってくる。
  • まだレベルIIだっていうのに混乱気味。
  • public・protected(PHP IIIで登場)・privateという3つのアクセス修飾子がある。
  • ゲッターとセッターの違いがたびたびわからなくなる。なんで使うのこれ?
    privateにしたプロパティの値に直接アクセスできなくなるから、ゲッター・セッターを経由してアクセスしてねってことなんだろうけど……。それをすることでのメリットがよくわからない。
  • 学習時間は1:25。

オブジェクト指向とは

オブジェクトとは「モノ」のこと、指向とは「~を中心に」ということ。

車で例えると、色っていう情報、車種っていう情報、燃費っていう情報、値段っていう情報……これらが組み合わさって1つの車ができてる、みたいな考え方をすること……なのかな?

結構大切な考え方らしい。けどまだ理解は追い付いてない。

アクセス修飾子とは

public・protected(PHP IIIで登場)・privateの3つがある。

publicは誰でもウェルカム、普通に学校に通ってる人。どこからでもアクセス可能。
protectedは人見知り。親戚までしか会えない。他人は拒絶。
privateは引きこもり。親の顔も見られない。もう誰も信じない。

そんなイメージで使い分けはできそうですが、じゃあなんでアクセス制限するのかっていうとわかりません。

調べた感じだと、publicにしていたせいで、A校の花子ちゃんに会いたかったのにB校の花子ちゃんが来ちゃったみたいなことが起こるらしい。

ゲッターとセッターとは

完璧で究極なアレでもバレーの大事なポジションでもなく。
Getする人とSetする人のこと。

ゲッターを使えば引きこもりくんの名前を教えてくれる。
セッターを使えば引きこもりくんの名前を変えてくれる。(え?)

たぶん、そんな認識。

PHP III

  • カタカナを理解しないままカタカナが増えていく恐怖。
  • クラスはくくりのことで、メニュークラスの中にドリンククラスとフードクラスが入っている。ドリンククラスの中にジュースというインスタンス(オブジェクト)とコーヒーというインスタンス(オブジェクト)が入っている。
  • メニュークラス(親クラス)でやっていたことはドリンククラス、フードクラス(子クラス)にも引き継がれる(継承)。
  • 親クラスでやっていたこと(メニュー名や料金の表示)を引き継ぎながら、子クラスごとで違うこともできる(ドリンクはホットかコールドかの表示、フードは辛さの表示など)
  • menu.phpとfood.phpとdrink.phpとdata.phpとあってややこしい。どれをどこに書くのが正解なのか理解できていない。
  • 学習時間は0:50。

PHP IV

  • クエリ情報といって、URL末尾の.php以降に「?」と「キー名=値」で値ごとに表示を変えることができる。すごい。ちなみにこの記事を書いている画面のURLも、.php?post=ほにゃららとなっている。
  • しかしこのへんからさらに訳がわからんのだよなあ。
  • どういう順番で情報をとってきて整理しているのか頭の整理がついていません。
  • 学習時間は1:13。

最後に

わからんばっかり書いてるし、I>II>III>IVの順で情報量が減っている通り、どんどん理解が追い付かなくなっているのがよくわかりますね!
わからんままやっているので説明ができない。どこがどうわからない、難しいと感じているのかもわからない。

まあ1周じゃわかんなくても当然じゃないかなあと思います。ぼちぼち復習したい。もちろんPHP以外も……。

一応この記事を書いていてちょっと整理された部分もある(特にIとIIは)ので、ブログにアウトプットすることの大切さを感じたりもしました。
いかんせん時間がかかるのがネックだけど、これも勉強の一つだからヨシ!

一気にやったのでランキングに入りました。

記念にスクショを………。ていうかみんな頑張ってるね。すごい。


明日からはWordPressのオリジナルテーマ開発の勉強……になるのかな?

このブログの見た目も大きく変わってくるのかもしれない。今のてがきノートスキンも気に入ってるけどしょうがない。

ではまた明日~。

コメント

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