lesson4 PHPでテキストアプリ開発

ファイル置き場

part2 src/ディレクトリの下にPHPファイルを作成。

docker-compose execコマンドで実行

PHPの基本的の書き方

1
2
3
4
5
6
7
8
9
10
11
</php // 開始タグ

/*
複数行の
コメント
*/
echo 'Hi!PHP' .PHP_EOL; // 文

//単一行のコメント

?> //閉じタグ 省略推奨

echo 文字の出力

1
2
3
4
<?php

echo 'Hi! . PHP_EOL;
echo 'How's it going? . PHP.EOL;

最初のPHPファイル

ディレクトリ

tmp/echo.php

1
2
3
<?php

echo 'Hi'.PHP_EOL; // Hi

テキストアプリのメニュー内容

  • 読書ログの表示

    • 表示内容
    • 書籍名:銀河鉄道の夜
    • 著者名:宮沢賢治
    • 読書状況:読了
    • 評価:5
    • 乾燥:本当の幸せとは何だろうか?と考えさせられた

book_log.phpに記述していく

1
2
3
4
5
6
7
<?php

echo '書籍名:銀河鉄道の夜'.PHP_EOL;
echo '著者名:宮沢賢治'.PHP_EOL;
echo '読書状況:読了'.PHP_EOL;
echo '評価:5'.PHP_EOL;
echo '乾燥:本当の幸せとは何だろうか?と考えさせられた'.PHP_EOL;

標準入力の値を取得しよう

STDIN 標準入力(standard input)を意味する定数

fgets ()で指定したものから1行データを取得する

標準入力の値を取得する

fgets(STDIN)

1
2
3
4
5
6
7
8
9
<?php

echo '読書ログを登録します'.PHP_EOL;
echo '書籍名:';
echo fgets(STDIN);

//
読書ログを登録します
書籍名:ドラえもん

変数

変数に値を格納する

変数に値を格納することを「代入」という

$変数名=値(式)

$tile='ドラえもん'; // $titleという変数に「ドラえもん」という値を代入している

文字列とは?

文字を並べたものが文字列「’」「”」で囲む

1
'str'
1
"str"

「’」 「”」に比べてやや高速、変数やエスケープ文字は展開できない。

「”」変数やエスケープ文字を展開できる

1
2
3
$name = 'たけし'
echo '{$name}、ありがと!\n'; // 「{$name}、ありがと!\n」
echo "{$name}、ありがと!\n"; // 「たけし、ありがと!<改行>」

文字列の結合 「.」

1
2
$name = 'たけし';
echo $name.'グッジョブ! . PHP_EOL'; // たけしグッジョブ<改行>

登録時に余計なスペースを削除して登録

trim 文字列の先頭および末尾にあるホワイトスペースを取り除ける

trim($str)

1
trim('   ドラえもん') // 「ドラえもん」

PHP 条件分岐

構文

1
2
3
4
if
if(条件式) {
  文
}
1
2
3
if ($carts > 10) {
echo '買いすぎです';
}

真偽値を見てみる

var_dump();  // 型と値を確認できる (echo は文字列しか出力しない)

1
2
3
4
5
<?php

var_dump(1 <2 ); // bool(true)

var_dump(1 > 2); //bool(false)

繰り返し処理(無限ループ) while文

構文

1
2
3
while(条件式) {
文;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

$i = 0;

while (true) {
if($i <= 5) {
echo $i . PHP_EOL;
$i++;
} else {
break;
}
}
//
0
1
2
3
4
5

配列

  • 初期化

    $配列名 = [値1, 値2, 値3];

  • 配列に要素を追加

    $配列名[] = 値;

  • 配列の要素にアクセス (キーは0から始まる)

    $配列名[キー番号(文字列)]

連想配列

  • 初期化

    1
    2
    3
    4
    $配列名 = [
    'キー名' => 値,
    'キー名' => 値,
    ];
  • 配列に要素を追加

    1
    $配列名['キー名'] = 値;
  • 配列の要素にアクセス (キーは0から始まる)

    1
    $配列名['キー名']

    ※ PHP内部では配列と連想配列は区別されない(連想配列はキーが’0’,’1’,’2’…0から始まる文字列が添え字の配列として扱われている)

配列に配列を格納することもできる。

1
2
3
4
5
6
$arrys = [
[1,2,3,4,5]
,
[2,4,6,8,10]
,
];

繰り返し処理 foreach文

構文

  • 配列
    1
    2
    3
    foreach($配列名 as $要素名) {
    // 繰り返したい処理
    }
  • 連想配列
    1
    2
    3
    foreach($配列名 as $キー名 => 要素名) {
    // 繰り返したい処理
    }

    例文

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php

    // 配列
    $numbers = [1, 2, 3, 4, 5];
    foreach ($numbers as $number) {
    echo $number * 2 .PHP_EOL;
    }

    // 連想配列
    $currencies = [
    'japan' => 'yen',
    'us' => 'dollar',
    'england' => 'pound',
    ];
    foreach ($currencies as $country => $currency) {
    echo $country . ':' . $currency . PHP_EOL;
    }

    関数 一連の処理を行うもの

関数定義

1
2
3
4
5
function 関数名(引数1, 引数2, ...,引数n)
{
# 処理
return 戻り値;
}

※ 引数と戻り値は省略できる, 関数名はキャメルケース

関数の呼び出し

  • 戻り値あり // 戻り値を変数に格納している。

    $変数 = 関数名(引数1, 引数2, …,引数n)

  • 戻り値なし // 関数から値は返ってこない

    関数名(引数1, 引数2, …,引数n)

例文

1
2
3
4
5
6
function multiply($a, $b)
{
return $a * $b;
}

echo multiply(3, 5) . PHP_EOL;