ProgateでPHPの学習

この記事は16分で読めます

自分用メモ

随時追記していく

※参考:Progateとは?魅力や欠点、学習の順序や心得など

学習コース PHP Ⅰ


①PHPとは?


★PHPとは?

PHPを学ぶことで、ユーザーからデータを受け取りそれを表示するなど
実際のWebサービスで必要な機能を作る事ができる

HTMLでは決められたテキストしか表示できないが、
PHPを使うと、見る人や状況に応じて
表示するテキストを変える事ができる

★PHPの書き方




PHP

初級‘; ?>




PHPはHTMLに埋め込んで使う事ができる
の中に、PHPの命令を書いていく
の部分が、HTMLに変換された上で表示される

★PHPの文法

//この行はコメントです
echo 'こんにちは';
echo 'PHPを学ぼう';
?>

PHPは文末にセミコロン(;)を使って文を区切る
セミコロンを忘れると「エラー」が起きるので注意
「//」から行末まではコメントになる:メモで使う、動作には関係しない
「echo」は、文字列などを出力するための命令
文字列で出力するにはシングルクォーテーション()または
ダブルクォーテーション(””)で囲む

echo 7 + 3; //結果:10
echo 5 % 2; //結果:1

PHPでは、計算をする場合、最後にセミコロン(;)を忘れずに書くこと
計算の値をクォーテーション(”)で囲まないように注意→文字列になる

②PHPの基礎

★変数とは?

$name = 'Bob';
echo $name;
?>

PHPでは、頭に「$」記号を付けて変数を定義する
「$変数名 = 値;」で様々な値を変数に入れる事ができる
「$name = ‘Bob’」は、「右辺’Bob’を変数$nameに代入する」という意味がある

$length = 7;
$area = $length * $length;
echo $area;

★変数名の付け方
英単語を用いるのがルール。数字で始めたり日本語を使うのはNG。
「$userName」のように、2語以上の場合は大文字で区切るルールがる
読みやすいコードにするために、変数の名前から
内容が想像できる名前にする事が望ましい

★変数の更新

$num = 3;
echo $num;
$num = 5;
echo $num;

変数は、中に入っている値を更新する事もできる
値が代入された変数に、その後再び値を代入すると、
後で代入した値によって変数の中身が上書きされる

★変数に数字を足す

$x = 1;
$x = $x + 10;
echo $x;

変数に数字を足したい時は、変数に数字を足した後、変数に再び代入する
引き算など、その他の計算も同様
「=」は代入の意味。「左右の値が等しい」ことを表す訳ではない

★文字列の連結

$lesson = ‘PHP’;
echo $lesson.’入門’;

$level = ‘入門’;
echo $lesson.$level;

ドット(.)記号を用いると、文字列を連結する事が出来る
以下の3パターンがあるので注意
「文字列同士の連結」「文字列と変数の連結」「変数同士の連結」


★変数展開
シングルクォーテーションで囲むとそのまま出力される
ダブルクォーテーションで囲むと、変数に代入された値が出力される

$name = ‘にんじゃわんこ’;
echo “こんにちは、{$name}さん”;
//こんにちは、にんじゃわんこさん
echo ‘こんにちは、{$name}さん’;
//こんにちは、{$name}さん

ダブルクォーテーションで文字列を囲んだ場合、中の変数を{}で囲むと、
その部分が変数に入っている値で置き換えられる(変数展開)
シングルクォーテーションで文字列を囲んだ場合は変数展開されず、
変数が{}で囲まれていても、そのまま文字列として見なされる

③条件分岐

if文
else,elseif文
&&, ||文
switch文

★if文
if文内の、()に書かれてある条件式が成り立っていれば、
echo以下が出力されるが、成り立ってなければecho以下は出力されない

$x = 20;
if ($x > 10) {
echo ‘$xは10より大きい’;
}
//結果:$xは10より大きい

$x = 20;
if ($x > 30) {
echo ‘$xは30より大きい’
}
//結果:条件式が成り立たないため処理は実行されない

if文内の、()に書かれてある条件式では比較演算子を使う
比較演算子を用いた結果は真「true」か偽「false」のどちらかになる

== 左辺と右辺が等しい時true
(PHPでは「=」だけだと「代入」という意味になる)
!= 左辺と右辺とが等しくない時ture

ーーーーーーーーーーーーーーーーーー

if文と真偽値

if(true) {
echo ‘条件はtureです’;
}
//結果:条件はtrueです

比較演算子を用いて比較した結果はtrueかfalseになる
trueとfalseは「真偽値」と呼ばれる:真偽値はこの2つしかない
真偽値は「文字列(string)」や「数値」といったデータの種類の1つ
if文では、条件式がtrueの場合if文の中身が実行され、
falseの場合は実行されない

ーーーーーーーーーーーーーーーーーー

★else
if文にelseとelse以下のechoを書いてあった場合、
if文以下の条件式()が正しくないとしたら、else以下のechoが出力される

$x = 20;
if ($x == 30) {
echo ‘$xは30です’;
} else {
echo ‘$xは30ではありません’;
}
//結果:$xは30ではありません

ifと組み合わせてelseを使うと
「もしも〜だったら・・・、そうでなければ・・・」
といった条件分岐が可能となる
if文の条件が「false」であった場合、else以下の処理が実行される

ーーーーーーーーーーーーーーーーーー

★elseif
ifとelseの間にelseifが書かれてある場合、
「結果」を3つ以上の処理から選択できる事になる

$x = 20;
if ($x > 30) {
echo ‘$xは30より大きい’
} elseif ($x >= 20) {
echo ‘$xは30以下20以上’
} else {
echo ‘$Xは20より小さい’
}
//結果:$xは30以下20以上

elseifを用いる事で、
「もしも〜だったら・・・、それとも〜であれば・・・、
いずれでもなければ・・・」といった多岐分岐が可能になる
elseifは必要な分岐の数だけ並べる事ができるが、
複数の条件に合致した場合、実行されるのは最初に合致したブロックだけになる


★複数の条件式を組み合わせる(&&,||)
いわゆる「論理演算子」のこと
「&&」はANDで、「||」はORの意味。他にNOT(!)がある。

$x = 20;
if ($x > 10 && $x < 30) {
echo '$xは10より大きい、かつ30より小さい';
}
if ($x < 10 || $x > 30){
echo ‘$xは10より小さい、または30より大きい’;
}
//結果:$xは10より大きい、かつ30より小さい

「&&」と「||」は”論理演算子”と呼ばれ、
複数の条件を1つにまとめる時に使う
「&&」は左右の式が共に「true」の場合、全体も「true」になる
「||」は左右の式のどちらか、または両方が「true」の場合、
全体も「true」になる

ーーーーーーーーーーーーーーーーーー

★条件の否定(!)
「!」を使う場合、()が二重になるので注意

$x = 20;
if (!($x == 30)) {
echo ‘$xは30ではない’;
}
//結果:$xは30ではない

「!」も論理演算子の1つであり、条件の否定ができる
式が「真」であれば「偽」になる
式が「偽」であれば「真」になる

★練習問題
「3の倍数である」という事は「3で割った時の余りが0」
すなわち「%3 == 0」という事になる

$x = 1071;
if ($x%3 == 0 && $x%7 == 0){
echo 'xは3の倍数かつ7の倍数です。';
}elseif($x%3 == 0) {
echo 'xは3の倍数ですが7の倍数ではありません。';
}elseif($x%7 == 0){
echo 'xは7の倍数ですが3の倍数ではありません。';
}else{
echo 'xは7の倍数でも3の倍数でもありません。';
}
?>
/結果:xは3の倍数かつ7の倍数です。

ーーーーーーーーーーーーーーーーーー

★switch文
以下の例は、コインの表裏を実装したもの
表が「0」で、裏が「1」になっている(それ以外は「エラー」になる)
switch文の個々の項目の最後には、「break;」を付けるのを忘れない!
基本的に「case-echo-break」の3点セット
→ただし、最後は「case」ではなく「default」になる。

【if文を用いた条件分岐】
ーーーーーーーーーーーーーーーーーー
if ($coin == 0) {
echo ‘表’;
}elseif ($coin == 1){
echo ‘裏’;
}else{
echo ‘エラー’;
}

【switch文を用いた条件分岐】
ーーーーーーーーーーーーーーーーーー
switch ($coin) {
case 0:
echo ‘表’;
break;
case 1:
echo ‘裏’;
break;
default:
echo ‘エラー’;
break;
}

④配列を使ってみよう

配列
連想配列

arrayで囲まれてる個々の文字には「インデックス番号」が付いている
インデックス番号は、左から順に0→1→2…と付けられる。
出力は「echo 変数名[インデックス番号];」という形になっている

★配列を使ってみよう

$names = array(‘John’, ‘Kate’, ‘Bob’);

echo $names[0];
echo $names[1];

配列の基本構文は「$配列名 = array(値1, 値2, ・・・)」となっている
配列のデータには先頭から0,1,2・・・と順に
「インデックス番号」が割り振られている
配列のデータを取り出すには「インデックス番号」を用いて
「$配列名[インデックス番号]」という風にする

ーーーーーーーーーーーーーーーーーー

★配列:値の追加、上書き

$names = array(‘John’, ‘Kate’, ‘Bob’);

$names[] = ‘Marry’;
echo $names[3];
//結果:Mary(値の追加)

$names[1] = ‘Jane’;
echo $names[1];
//結果:Jane(値の上書き)

配列の末尾に値を追加する時は「$配列名[]=値;」とする
また、既に存在するインデックス番号を指定すると、配列の値を上書き出来る

★連想配列
キーと要素の間にある「=>」を付け忘れないように注意
最後の値にはコンマ(,)を付けないので注意

$user = array(
‘name’ => ‘わんこ’,
‘age’ => 14,
‘gender’ => ‘mate’
);

ーーーーーーーーーーーーーーーーーー
★連想配列の使い方

$user = array(
‘name’ => ‘わんこ’,
‘age’ => 14
);

$user[‘level’] = ‘beginner’;
//連想配列の値の追加の仕方

echo $user[‘name’];
//結果:わんこ

連想配列の値を取り出すには、対応するキーを用いて
「echo 配列名[キー]」のようにする
「配列名[キー] = ‘値’;」とすることで、データを追加する事も出来る

★練習問題
「値の代入」は、連想配列「array();」が終わった後で行う。


// この下に連想配列を作ってください
$scores = array (
'数学' => 70,
‘英語’ => 90,
‘国語’ => 80,
);
$scores[‘国語’] += 5;
echo $scores[‘国語’];
?>

⑤繰り返し処理

for文
while文
break文
continue文
foreach文

★繰り返し処理
PHPのfor文は、JSのfor文と一緒。
この両者と、Pythonのfor文は内容が異なる。

【echoを使って1〜100まで出力】
echo 1;
echo 2;
echo 3;
・・・
echo 100;

【for文を使って1〜100まで出力】
()の最初には、基点となる数を置く
()の真ん中には、上限となる数を置く
()の最後には、ループする度に増やす数を書く

for ($i = 1; $i <= 100; $i++){
echo $i;
}

初期化:変数$iに、1を初期値として与えている
ループの条件:条件がどれだけあるかを書いている
変数の更新:ループする毎に値がどれだけ追加されるか

★演習問題
最後のechoでは、改行するかも考える必要がある
改行する場合は「.'
‘」を、変数と「;」の間に挟む必要がある


// この下に連想配列を作ってください
$scores = array (
'数学' => 70,
‘英語’ => 90,
‘国語’ => 80,
);
$scores[‘国語’] += 5;
echo $scores[‘国語’];
?>

ーーーーーーーーーーーーーーーーーー

★while文
最初に変数と代入する初期値を書く
次のwhileの後の()に最大値を書く
3行目に、実行する処理を「echo 変数;」で書く
最後の行に、ループ毎に追加される値を書く
(最後の行を忘れると、無限ループになるので注意する)

$i = 1;
while ($i <= 100) {
echo $i;
$i++;
}

★演習問題
echoには改行が必要な可能性があるので注意。
→必要な場合は'
;’を追記する
「$iに、2ずつ追加する」には「$i + 2;」を代入する必要がある


// 変数$iを定義してください
$i = 2;
// while文を書いてください
while ($i <= 100) {
echo $i.'
‘;
$i = $i + 2;
}

?>

ーーーーーーーーーーーーーーーーーー

★break文
以下のコードでは、もし$iが5より大きい(6以上)になれば、
その時点で処理を数量する、という意味になっている

for ($i = 1; $i <= 10; $i++) {
if ($i > 5){
break;
}
echo $i;
}
//結果:12345

break文は、if文などの条件式と組み合わせて利用するのが一般的
for、while、foreachなどの繰り返し文の中で利用する

★continue
ループ処理において、特定の箇所のみをスキップする
以下の文は、3の倍数をスキップしている

for($i = 1; $i <= 10; $i++) {
if ($i % 3 == 0) {
continue;
}
echo $i;
}
//結果:12347810

if以下は、以下の意味がある。
「$iの値が3の倍数の時、その周のループを終了し、次のループを実行」


★foreach
PHPで用いられるループ処理の構文。
「配列+繰り返し(for)文」といった内容で、
配列の要素がある分だけ繰り返し処理を行う。
配列や連想配列を展開したい時や、
配列などの値を変更する必要がある場合に便利である。
情報が大量にある際に必ずと言っていいほど出てくるのがポイント。
書き方には「foreach (反復可能なデータ構造 as 要素)」である一次元配列と、
「foreach (反復可能なデータ構造 as キー => 要素)」といった
連想配列の2種類がある。

以下の図には「キー」が含まれてないので、一次元配列の書き方
arrayの中の()が、$valueに代入され、最後にechoで出力される?

$data = array(‘東京’, ‘大阪’, ‘京都’);

foreach ($data as $value) {
echo $value;
}
/結果:東京、大阪、京都

foreachは、配列または連想配列に対して、
先頭のデータから順に繰り返し処理を行うための命令
配列のデータを1つずつ取り出して、処理を行う事ができる
「as」の後ろの変数に、ループの度にデータが先頭から順に代入される

ーーーーーーーーーーーーーーーーーー
★foreachの書き方

$colors = array(
‘Apple’ => ‘Red’,
‘Banana’ => ‘Yellow’,
‘Grape’ => ‘Purple’
);
foreach ($colors as %key => $value) {
echo $key.’.’$value;
}
//結果:Apple.Red Banana.Yellow Grape:Purple


⑥関数

【関数の作り方について】
①最初に関数名を書く
→関数を自作する場合は「function」を入れる
→関数に値を渡す(「}」以下で引数を設定する)場合は、「()」の中に仮引数を設定する。
(複数の引数を設定する場合は、仮引数も引数を設定した数だけ複数になる)
→行の最後には、処理の初めを表す「(」を入れる

②処理を書いていく
→処理が終わったら、行を変えて「)」を入れる
→戻り値(return)がない場合、処理{ }の中にechoを書く
→戻り値(return)がある場合、echoは処理{ }の外に書く

③処理「)」の後に、①で設定(作成)した関数名を書く(関数の処理=呼び出し?)
→関数に値を渡す(引数を設定した)場合は、「()」の中に引数を設定する
→引数を設定した場合、まわりにダブルクォーテーション(””)を忘れずに記載する
→引数は1つだけとは限らず、複数の値を定義出来る(この場合、①の仮引数も複数になる)
→②で戻り値を設定した場合は、「?>」の前の行でechoを書く



ーーーーーーーーーーーーーーーーーー

★関数
strlenには、()で囲っている文字列の文字数を出力する働きがある
予め変数を定義して、その変数をstrlenの()内に入れてもOK
→変数に定義した文字列の文字数が出力される

echo strlen(‘Progate’);
//結果;7

$language = ‘PHP’
echo strlen($language);
//結果:3

関数とは、何かしらの「まとまった処理」を行い、値を返すもの
PHPには便利な関数が元から組み込まれている(=組み込み関数)

【count:配列の要素の数を返す関数】
$data = array(‘東京’, ‘大阪’, ‘京都’);
echo count($data);
//結果:3

count()は、配列の要素の数を出力する関数

【rand」】
echo rand(1,4):

rand()は、1つ目の引数と2つ目の引数の間のランダムな整数を返す

ーーーーーーーーーーーーーーーーーー
★関数を自作する

$radius1 = 3;
echo $radius1 * $radius1 * 3;
//結果:27

自分で関数を作成する事も可能
重複する処理を一箇所にまとめることで、
コードに変更があった時に関数の中身を変更するだけで
全使用箇所に変更を適用できる

【関数の定義】
function printCircleArea($radius) {
echo $radius * $radius * 3;
}

【関数の呼び出し】
printCircleArea(3);
//結果:27

「関数の呼び出し」で、関数に入力した数字が、
上の「関数の定義」で()で囲まれている変数に代入される、
そして最後に、echoで出力される感じ

関数を作るには「function 関数名(){ 処理 }」という書き方をする
関数名は自由に付ける事ができる
関数は「関数名()」という風に、()を付けて呼び出す事ができる

【関数の定義】
function hello() {
echo ‘Hello World’;
}

【関数の呼び出し】
hello();

当分は、何が「関数の定義」で、
何が「関数の呼び出し」かを明確に認識した方がいい

ーーーーーーーーーーーーーーーーーー
★引数(関数の自作)
関数を自作する際は「function」という記号を入れる事。

最初に()の中に引数を書く、最後に「{」を入れる
次のechoの出力で、関数の処理を書く
三行目では「}」を書く
ーーーーーーーーーーーーーーーーーー
function printSum($num1,$num2) {
echo $num1 + $num2;
}

printsum(1, 3);
//結果:4
?>

ーーーーーーーーーーーーーーーーーー
【実際に関数を書いてみよう】

function outputName(){
$name = "山田";
echo "私の名前は".$name."です。
“;
}
outputName();
?>

ーーーーーーーーーーーーーーーーーー
【関数における引数とは】

function outputName($name){
echo "私の名前は".$name."です。
“;
}
outputName(“山田”);
?>

★戻り値
戻り値は、functionの行の「{」の次の行に書いてるので、
「処理」に区分される?

function getSum($num1, $num2) {
return $num1 + $num2;
}
$sum = getSum(1,3);
echo $sum;
//結果:4
?>

関数は(何の?)値を「返す」ことが出来て、この値を「戻り値」と呼ぶ
関数を実行した結果、その関数実行部分が戻り値に置き換わるイメージ
戻り値は「return」で指定する

⑦お問い合わせフォーム


★フォーム
フォームの見た目はHTMLで作成し、入力値を取得するためにPHPを使用する

//ここにフォームの内容を書いていく

フォームを作りたい時は、HTMLのformタグを用いる
action属性には、データを渡す先のURLを指定する

ーーーーーーーーーーーーーーーーーー
★テキストボックスを作ろう(form要素)
テキストボックスを作るには「input要素」が欠かせない
→input要素は、
で囲う
input要素の中には「type」と「name」を入れる?

name属性は、入力された値を取得する時に使う
フォームのデータをPHPで受け取る時に使う
「inputタグ」は、閉じタグが必要ないので注意する

ーーーーーーーーーーーーーーーーーー
★テキストボックスを作ろう(textarea要素)
テキストボックスを作るには、textareaタグを用いる
textareaタグは、
に囲って使う
縦横の大きさを指定する事も可能:closとrowsを使う

改行を含む文章のためのテキストボックスを作るには、
HTMLのtextareaタグを用いる
textareaタグは、inputタグと同様に、
入力値を取得するときに使う名前を指定する

★$_POST
・「type」には、様々な動きが指定される
→type属性は、値を指定する事で、様々な部品を作成できる
・「text」は、これから文章を書く、という意味?
→「type=”text”」は、テキスト入力欄、を意味している
・「submit」は「送信」という意味
→「type=”submit”」は、送信ボタン、を意味している
・「value」は、ボタンの上に乗っかる文章、を表してる?
→value属性は、その項目が選択された時にサーバーに送信される値を指定する

送信ボタンを作るには「input type=”submit”」を用いる
ボタン上には、value属性に指定された値が指定される

ーーーーーーーーーーーーーーーーーー

★フォームのデータを受け取ろう
・まずformの中に、連携したいPHPデータを記載する
 記載する際は、ファイル名をダブルクォーテーション(””)で囲う
・inputタグの中に、PHPファイルと連携させるための名前を書く
・PHPファイルには、HTMLに書いた連携させるための名前を、[”]で囲み、
 これを「$_POST」の右において、最後にechoでこの2つを出力する
・メソッドを「$_POST」で設定する場合、これは連想配列として用いられる。
 $_POSTの[”]に入っているものは、array()内のキーとして用いられる。

echo $_POST[‘name’];
//結果:にんじゃわんこ
echo $_POST[‘email’];
//結果;wanko@prog-8.com

フォームで送信した値を受け取るには「$_POST」を使用する
「$_POST」は、連想配列になっている。
[]の中に、inputとtextareaのname属性に指定した値を入れる事で、
それぞれの送信した値を受け取る事ができる

ーーーーーーーーーーーーーーーーーー

★選んだ選択肢の値を渡そう
「fruit」という値は、「apple」「banana」「orange」の3つの値の結晶みたいなもの?


selectタグには、
「$_POST」で値を受け取るためのname属性を指定する
タグのvalue属性は、送信される値


★フォームを完成させよう
forは、変数に設定した値を繰り返す構文
タグは、 HTMLのセレクトボックスで選択肢を示すもの

繰り返し処理と変数展開を用いて、多数optionタグを作る
変数展開を用いる際は、ダブルクォーテーション(””)で囲むこと


道場コース PHP Ⅰ



★FizzBuzz
for文の中にif文を書いていく
最初に「Fizzbuzz」を表す「15」から書くのがポイント
echoで’FizzBuzz’、’Fizz’、’Buzz’と入力する際は
が必要になるが、
for文の最後のechoのように、「.
」としてはいけない。
もしこれにすると、コンマ「.」が付いて、「FizzBuzz.」と入力されてしまう
‘FizzBuzz
‘と、英単語にそのまま
をくっつけるのがポイント。

for($i = 1; $i <= 100; $i++) {
if ($i%3 == 0 and $i%5 == 0 ) {
echo 'FizzBuzz
‘;
}elseif ($i%3 == 0) {
echo ‘Fizz
‘;
}elseif ($i%5 == 0) {
echo ‘Buzz
‘;
}else {
echo $i.’
‘;
}
}
?>

学習コース PHP Ⅱ


料理注文サイトを作りながらオブジェクト指向を学んでいく

①オブジェクト指向の基礎を学ぼう

目標物を確認しよう
クラスとインスタンス
プロパティ
メソッド
$this
コンストラクタ
コンストラクタとプロパティ

★オブジェクト指向を学ぼう
現実のお店もECサイトも「商品」「ユーザー」「カート」などのオブジェクトが
組み合わさって出来ている、という考え方

ーーーーーーーーーーーーーーーーーー
★プログラムでのオブジェクト
いくつかのコードで1つのオブジェクトが構成されている、と考える
(それぞれのオブジェクト=塊の中に、名前や値段などの様々な特性が含まれている)

プログラムの世界でも、オブジェクトをコードで再現する仕組みが用意されている
この仕組を使うと、それぞれのオブジェクトに関するプログラムの役割が明確化し、
それらを組み立てるようにプログラムを書く事ができる

ーーーーーーーーーーーーーーーーーー
★クラスとインスタンス
オブジェクト指向では「クラス」というオブジェクトの設計図を作成し、
クラス=設計図をもとにオブジェクト(実体)を生成する

★クラスの書き方
「class Menu {}」が基本、これを?>で囲む感じ

class Menu {
//クラスの内容を書く
}
?>

「{ }」の中で、クラスの内容を書いていく

ーーーーーーーーーーーーーーーーーー
★インスタンス
「class Menu〜」を書き終えたら、その下にインスタンスを書く感じ
(インスタンスの生成は、クラスの外で行われる)
→クラス=設計図から、インスタンスが新しく(new)生成される感じ?
「インスタンスを生成する」という独特な用語がある
「new Menu」の右の()には、
インスタンスの要素(=プロパティとメソッド?)を入れるのか?

class Menu {
//クラスの内容を書く
}
$menu1 = new Menu();
$menu2 = new Menu();
$menu3 = new Menu();
?>

クラス=設計図をもとに生成された実体を「インスタンス」と呼ぶ
「インスタンス」と「オブジェクト」は同じ意味で使われる
インスタンスは「new」を用いて「new クラス名()」で生成される
「$変数名 = new クラス名()」とすることで、
生成したインスタンスを変数に代入していく


★プロパティとメソッド
クラス=設計図には、そのインスタンスが持つ
「プロパティ」と「メソッド」の2つを定義する
→プロパティ:インスタンスが持つデータのこと
→メソッド:インスタンスに関連する処理(関数)のこと

★プロパティの書き方
「public」という単語が大事?
プロパティの名前の冒頭には「$」を付ける必要がある

class Menu {
public $name;
}
?>

プロパティは上記のように「public $プロパティ名」のように定義する

ーーーーーーーーーーーーーーーーーー
★プロパティへのアクセス
最初にクラスを指定
次にプロパティを指定→その上でプロパティに名前を指定?

class Menu {
public $name;
}
$curry = new Menu();
$curry ->name = ‘CURRY’;

echo $curry->name:
//結果:CURRY
?>

「インスタンス->プロパティ名」とすることで、
そのインスタンスのプロパティにアクセス出来る(プロパティ名に$は不要)
プロパティにアクセスする際は「->」を用いる
(-は「ハイフン」と読む)

ーーーーーーーーーーーーーーーーーー
★メソッドの使い方
「class Menu」の中で、メソッドを定義する必要がある
この中には、「function」の文字がある
以下のコードは、「関数」の文法も用いている
「->」という記号を、忘れずに使うのが大切なのかな?

class Menu {
public function hello() {
echo ‘私はMenuインスタンスです’;
}
}

$curry = new Menu();
$curry->hello();
//「インスタンス->メソッドの呼び出し」

メソッドは「public function メソッド名()」のように定義する
「インスタンス->メソッド名」のように、メソッドにアクセスする事も可能

★$this
「連結」みたい:文字列連結演算子(.)を使う必要があるから

class Menu {
public $name;
public function hello() {
echo '私の名前は'.$this->name.’です’;
}
}

$curry = new Menu(); //インスタンスの生成
$curry->name = ‘CURRY’; //プロパティに値をセット
$curry->hello(); //メソッドを呼び出す
?>

メソッド内でインスタンスのプロパティやメソッドにアクセスしたい時は
「$this」という特殊な変数を使う
「$this」は、クラス内のメソッドの定義の中でのみ使用できる
「$this」はメソッドが呼ばれた時に、
そのメソッドを呼び出しているインスタンスに置き換えられる

ーーーーーーーーーーーーーーーーーー
★コンストラクタ
「construct」と書くので注意:メソッドの1つ
また、functionの後のアンダーバー(_)が2つ重なる点も注意
コンストラクタは、何らかの「処理」を意味する用語っぽい
→「echo」で出力はするみたい、また関数の呼び出しっぽい動きもある

class Menu {
public function__construct() {
//コンストラクタ内で行いたい処理
}
}

class Menu {
public function__construct() {
echo'1つのメニューが作成されました';
}
}
$curry = new Menu();
?>
//結果:1つのメニューが作成されました

コンストラクタ:インスタンスの生成時に呼ばれるメソッドのこと
「__construct」という特別なメソッドを定義すると、
newを用いてコンストラクタを生成する時に、
このメソッドが自動的に呼ばれる


★コンストラクタとプロパティ
「public」はメソッド
関数の処理と似てる


class Menu {
public $name;
public function __construct($name) {
echo $name;
}
}

$curry = new Menu('CURRY');
?>

「__construct」メソッドは、引数を取る事もできる
関数の処理の終了後、「new」を用いてインスタンスを生成する時には
引数を与える事ができる→この引数の値が「__construct」メソッドに渡される

ーーーーーーーーーーーーーーーーーー
「$this」は、メソッド内で
インスタンスのプロパティやメソッドにアクセスしたい時に使う
→以下の場合、publicを使ってメソッドにアクセスしてる?
「$this」は、メソッドの終了後に3行にわたる処理がある



「__construct」メソッド内で、「$this」を用いて、
インスタンスのプロパティに値をセットできる

②完成物に近づけよう


★HTMLにPHPを埋め込もう
上のコードは、PHPとHTMLが分かれてるので見やすい(と言える)
コードを分ける場合、HTMLの中にPHPを埋め込む場合は、
1行になるのでセミコロン(;)は不要である
コードを分けない場合、文字列連結(.)や
シングルクォーテーション(”)を考慮する必要がある?

【PHPとHTMLが切り分けられてるので見やすい】
ーーーーーーーーーーーーーーーーーー



【コードの内容が把握しづらい】
ーーーーーーーーーーーーーーーーーー



上のコードのようにHTMLにPHPのコードを埋め込むことで、
両者を切り分ける事ができ、見やすくなる

ーーーーーーーーーーーーーーーーーー
★foreach文をHTMLに埋め込む
foreachをHTMLがある状況で使うには、endforeachを設定する必要がある?
foreachの($words as $word)や($data as $Value)の構成は、
左側の「$words」や「$data」が配列名、
右側の「$word」や「$Value」が変数名になっている
→配列名には複数形が来る(?):ただし「data」は単複同形の単語である
→複数形の場合、右側にはその単語の単数形が来る



foreach文をHTMLに埋め込む際、上記のように書く事ができる
foreach文の「{」の代わりに「:」を、「}」の代わりに「endforeach」と書く
この処理部分にはHTMLのタグを書けるので便利

ーーーーーーーーーーーーーーーーーー
★endifとendfor
foreachと同様、if(条件分岐)やfor(繰り返し)もHTML内で書ける
処理のはじめである「{」を「.」で置き換えたり、
処理の終わり「}」を「end」で代表し、endifやendforという単語にする点は、
foreach〜endforeachと同じ

【endifを用いたif文】
ーーーーーーーーーーーーーーーーーー



【endforを用いたfor文】
ーーーーーーーーーーーーーーーーーー



if文やfor文、while文やswitch文も、foreach文と同様に、それぞれ
「endif」「endfor」「endwhile」「endswitch」と書く事ができる


★ファイルを分ける(require_once)
クラス定義用のファイルが1つ目の「menu.php」
データ定義用のファイルが2つ目の「data.php」
表示用のファイルが3つ目の「index.php」
コードが長くなってきたので、上記3つに分けている
「require_once」を用いると、別のphpファイルを読み込む事ができる
require_onceで読み込んだファイルで定義されているクラスや変数を、
require_onceを記述したファイル内で使う事ができる
→「menu.php」の内容が「data.php」に移り、
 これを踏まえた「data.php」の内容が「index.php」に写っている

【menu.php】



【data.php】



【index.php】



ーーーーーーーーーーーーーーーーーー
★画像と価格を表示しよう
Menuクラスに、imageプロパティとpriceプロパティを定義する
imageプロパティの値はタグのsrc属性に指定するので、
クォーテーションの中に埋め込む必要がある

【PHP】


//HTMLタグの中にPHPを埋め込み、画像を表示する
//echoをしないと、処理の結果が出力されない
//PHPタグの外側は、クォーテーション(””)で囲む必要がある

【HTML】


//PHPのコードが処理され、画像のリンクに置き換わる


③カプセル化

④注文サービスを完成させよう




  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

管理人紹介


21世紀、より良い人生を歩むための個人事業主による備忘録メモです。固定観念にとらわれず、日本や世界の深淵に触れ、自由快適な人生を歩んでいく事を大切にしています。