sit in a circle and chat happily

PHP 初日

投稿日:2022-01-13
更新日:2022-03-24
php

第1章:PHPの基本

環境構築

XAMPP

Macユーザは「MANPP」と呼ぶこともある

ざんぷ
XAMPPコントロールパネル

利用するサービスを「Start」をクリックする。

★XAMPPを終了するときは「Stop」をクリックして、背景色(緑)がグレーになっていることを確認してから
「Quit」ボタンをクリックしてXAMPPを終了させる。

http://localhost/

PHPとは

Webサーバ上で動作するスクリプト言語の1つ。HTML内にPHPプログラムを埋め込むことができるため、HTML経験者になじみやすい言語。
Web用の機能が豊富に用意されており、手軽に動的なWebサイトを構築できる。

スクリプトとは

書いたらすぐに実行できるプログラムのこと。
そもそもスクリプトには「原稿」「台本」の意味がある。コンピュータに対してどのような処理をすればいいのか台本を書くつもりで学習するといい。

PHPで実現できることの例

・アクセスした時間で表示内容を変える
・お問い合わせフォームの作成
・データベースと連携した検索サイト 等

PHPのメリット

・文法が簡単で学習しやすい
・利用者が多く、マニュアル類が充実している
・多くのWebサーバで利用できる

バージョン、マニュアル

PHP公式サイトで確認する

PHPファイルを作成

1.拡張子を「.php」にする

2.ファイル名には半角英数字を使う

3.大文字・小文字を意識する

PHP記述法

・・・¥xampp¥htdocs¥sample¥01¥01_test.php

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>PHPの基礎知識</title>
</head>
<body>
  <h1>HTML</h1>
  <p>こちらはHTMLです。</p>
  <h1>PHP</h1>
  <p><?php echo'こちらはPHPです。';?></p>
</body>
</html>

http://localhost/sample/01/01_test.php


<!-- ソースコード -->

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>PHPの基礎知識</title>
</head>
<body>
  <h1>HTML</h1>
  <p>こちらはHTMLです。</p>
  <h1>PHP</h1>
  <p>こちらはPHPです。</p>
</body>
</html>

PHPブロック

<?php ここにPHPを記述する ?>
<?php
ここにPHPを記述する
?>
<body>
  <h1>HTML</h1>
  <p>こちらはHTMLです。</p>
  <h1>PHP</h1>
  <p><?php echo'こちらはPHPです。';?></p>
  <p>
    <?php
  echo 2022;
  echo "これは文字列です。";
  echo '<strong>PHP<br>学習中</strong>';
  print '出力命令はechoだけではない';
    ?>
  </p>
</body>
<!-- ソースコード -->

<body>
  <h1>HTML</h1>
  <p>こちらはHTMLです。</p>
  <h1>PHP</h1>
  <p>こちらはPHPです。</p>
  <p>
    2022これは文字列です。<strong>PHP<br>学習中</strong>  </p>
</body>

PHP記述のルール

1.半角文字・半角スペースを使って記述する

2.文字列はシングツクォートかダブルクォートで囲む

3.数値はクォートで囲まず記述

4.命令の途中で改行はOK。単語の途中で改行はNG。

5.命令の最後に「;(セミコロン)」をつける

<?php
  echo 2022
  echo "これは文字列です。";
?>

コメントの記述

「//」から行末までをコメントとする

// ここに1行コメントを記述する

「/* ~ */」で囲まれたブロックをコメントとする

/*
ここに複数行
コメントを記述
する
*/

ドキュメントルート

ドキュメントルートとはサーバが認識しているトップフォルダを指す。
つまり、ホスト名のみ(http://localhost/)でアクセスしたときに参照するフォルダ。
ドキュメントルートに指定したフォルダ内のファイルは閲覧者に公開されるため「公開フォルダ」と呼ぶこともある。

XAMPPのドキュメントルート

(インストール場所):¥[XAMPP インストールフォルダ]¥XAMPP¥htdocs¥

文字列の出力

文字列として出力する場合はecho命令かprint命令を使用する

  <?php
  echo 2022;
  echo "これは文字列です。";
  echo '<strong>PHP<br>学習中</strong>';
  print '出力命令はechoだけではない';
  // 出力命令は「echo」でも「print」でもOK
  // でも文字数が少ないので「echo」を使うことが多い
  // HTMLタグを文字列に入れて出力できる
  /*
  「Shift」+「Alt」+「A」で
  複数行コメントタグを記述できる
  */
  ?>

エスケープシーケンス

エスケープシーケンスはダブルクォーテーションで囲まれた文字列で使用
「\’」「\\」のみシングルクォーテーション内で使用可能

  <?php
  echo '<p>I like 80\'s music.</p>';
  echo "<p>I like 80's music.</p>";
  echo 'I\'m a programmer.';
  echo "I'm a programmer.";
  ?>

第2章:変数

変数とは

変数はプログラム内で何度も使うであろう値を入れておく箱のようなもの。
変数内の値は変数名を指定して参照できる。
変数内の値はいつでも変更することができる。

変数を作る:変数の宣言と初期化

$変数名 = 初期値;

変数に値を入れる:代入

$変数名 = 値;

変数内の値を使用(参照)

$変数名 = 値;

変数内の値を変更する:代入

必要であれば複数変数を作成して利用

<?php
$name1 ='田中';
echo '<h2>1回目の出力</h2>';
echo $name1;

$name1 ='佐藤';
echo '<h2>2回目の出力</h2>';
echo $name1;

$name2='鈴木';
echo '<h2>3回目の出力</h2>';
echo $name1;
echo '<br>';
echo $name2;
?>
ブラウザ出力内容
<!-- ソースコード -->

<body>
  <h1>変数</h1>
<h2>1回目の出力</h2>田中<h2>2回目の出力</h2>佐藤<h2>3回目の出力</h2>佐藤<br>鈴木
</body>

作成していない変数を使用するとエラー:未定義変数の参照はエラー

ブラウザに表示されたエラー内容

PHPのエラー

PHPのエラーには、構文解析中に起こるエラーとプログラム実行中に起こるエラーがある。構文解析中にエラーが起こった場合、一切の処理は実行されない。

エラー名発生時の処理内容発生状況
Parse Errorプログラムは一切実行しないsyntax Errorと表示。
PHPの文法上正しくない記述になっている場合に発生。
構文解析時エラー
Fatal Errorエラー箇所以降は実行しない実行継続に致命的なエラー。
未定義の処理(関数)を呼び出す等した場合に発生。
プログラム実行時エラー
Warning処理を継続この箇所の実行不可を示す警告。
引数の間違い等で発生。
プログラム実行時エラー
Notice処理を継続この箇所の実行不可を示す注意。
未定義の変数呼び出し等で発生。
プログラム実行時エラー
エラーの種類

変数展開

"文字列{$変数名}文字列"

ダブルクォーテーションで囲んだ文字列内に変数を記述すると、変数内の値を参照して表示する。

<?php
/*
<!DOCTYPE html>より上にロジックを記述することで
HTMLとPHPが混在することを防ぐ
ロジック部分では様々な処理をした上で
変数に値を代入していく

<!DOCTYPE html>より下のHTML部分(ビュー)には
変数に出力のみ記述する

ゆくゆく「ロジック」と「ビュー」は別ファイルで管理していく
*/

$name = '田中';
$today = '2019/5/26';
$text1 = " $today に $name はプログラムを勉強しています。";
$text2 = "{$today}に{$name}はプログラムを勉強しています。";
$text3 = '{$today}に{$name}はプログラムを勉強しています。';
$text4 = "$todayに$nameはプログラムを勉強しています。";
/*
文字列を表す記号「'」「"」は
変数展開に対する挙動が異なる
「'」は変数展開しない
「"」は変数展開する
変数展開する時は変数名の終わりを明確にするため
変数名を「{}中カッコ」で囲む
*/
?>
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>変数展開</title>
</head>
<body>
  <h1>変数展開</h1>
  <p><?php echo $text1; ?></p>
  <p><?php echo $text2; ?></p>
  <p><?php echo $text3; ?></p>
  <p><?php echo $text4; ?></p>
</body>
</html>
(ワイの脳内)

ヒアドキュメント

長めのHTMLコードやメール本文などの文字列作成に便利。

$変数 = <<<終端ID[改行]

文字列を記述(ダブルクォーテーションで囲まれた文字列扱い)

終端ID;
<?php
$name = '田中';
$today = date('Y/m/d');
// 今日の日付を代入(2022/01/13)
$text = <<< EOD
「<<<」の後ろで終端IDを指定し、\nその終端IDが行頭に出てくるまでを文字列として扱います。\n
この"ヒアドキュメント"の中では'シングルクォート'や"ダブルクォート"をエスケープする必要がありません。<br>
投稿者:{$name}<br>
投稿日:{$today}
EOD;
/*
ヒアドキュメントは長い文章を扱う時に利用する
メール本文の作成などにも利用する
◆特徴:変数展開される
  文章内に変数や特殊文字(改行コード\n等)を記述できる
◆よく使う終端ID
  「EOM」End Of Message
  「EOT」End Of Text
  「EOD」End Of Document
*/
?>
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>ヒアドキュメント</title>
</head>
<body>
  <h1>ヒアドキュメント</h1>
  <p><?php echo $text; ?></p>
</body>
</html>

「\n」ではブラウザの出力時には改行されないが、ソースコードの確認がしやすくなる

<!-- ソースコード -->

<body>
  <h1>ヒアドキュメント</h1>
  <p>「<<<」の後ろで終端IDを指定し、
その終端IDが行頭に出てくるまでを文字列として扱います。

この"ヒアドキュメント"の中では'シングルクォート'や"ダブルクォート"をエスケープする必要がありません。<br>
投稿者:田中<br>
投稿日:2022/01/13</p>
</body>

終端IDは大文字アルファベット「EOM」「EOT」「EOD」をよく使う。

ヒアドキュメント内の文字列はダブルクォーテーションで囲んだ文字列と同じ扱いになり、特殊文字と変数は展開される。

改行した部分には「改行文字」が挿入される。

日付を扱う関数

PHPはよく使う処理をあらかじめ用意している。このよく使う処理を「関数」と呼ぶ。ここでは日付を扱うdate関数を学ぶ。

PHPがあらかじめ用意している関数は公式サイト「https://www.php.net/」で詳細を調べることができる。

【問題2-2】「©20XX companyname.」と出力。(20XXは今年の年)

<?php
$name = '田中';
$today = date('Y/m/d');
$year =date('Y');
?>
<div class="copyright">
  ©<?php echo $year; ?> companyname.
</div>
カテゴリー