alienHRNの訓練日記

IT業界初心者で勉強中。

◆20200831 授業メモ PHPの設定 記述の基本・変数・ヒアドキュメント

本日の授業内容

要約

PHPの設定

板書通り。

○便利コード  

nlbr2(変数名);→<br>を入れていなくてもブラウザでも改行してくれるコード。

 

 

 

 
以下板書
 
PHP環境構築
xamppフォルダをデスクトップに作成
インストール時
xamppフォルダを対象にインストール
tomcatはチェックを外す


〇XAMPPとは
X OSを指す
A ApacheWebサーバ
M MySQL / MariaDBデータベース
P PHP
P Perl

〇設定の仕方

変更する設定ファイル
xamppフォルダ内にPHPに関するファイルの入ったphpフォルダがあります
phpフォルダ内の設定ファイルphp.iniを編集します


編集前にバックアップ
設定ファイルが壊れてしまうとXAMPPが動かなくなってしまいますいつでも
元の設定に戻れるよう現在の設定ファイルをコピーしてバックアップを作成します


コピーで作成したバックアップファイルの名前を変更しますバックアップファイル
が設定ファイルとして認識されないよう念のため拡張子も変えておきます
php_日付.ini.bk
拡張子を変更してもよいか確認されるのでOKをクリックします



設定ファイルを編集
バックアップを作成した後設定ファイルphp.iniを編集します


〇開始タグの短縮形に関する設定変更(187行目付近)
PHPブロックタグを短縮形で使用できるようにします

変更前
short_open_tag = Off

変更後
short_open_tag = On

開始タグの短縮形
通常の記述

1
  <? php echo 'Hello World !!'; ?>
    短縮形

1
  <? echo 'Hello World !!'; ?>
    echo付き短縮形

1
  <?= 'Hello World !!'; ?>
    エラーレベルに関する設定変更(463行目付近)
開発時は詳細なエラーを表示させてデバッグの手がかりにします

変更前
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

変更後
error_reporting = E_ALL

定数  説明
E_ERROR 重大な実行時エラーこれはメモリ確保に関する問題のように復帰で きないエラーを示します
スクリプトの実行は中断されます
E_WARNING 実行時の警告(致命的なエラーではない) 。スクリプトの実行は中断さ れません
E_PARSE コンパイル時のパースエラーパースエラーはパーサでのみ生成されま 
E_NOTICE  実行時の警告エラーを発しうる状況に遭遇したことを示す。 ただし通常のスクリプト実行の場合にも
この警告を発することがありうる
E_CORE_ERROR  PHPの初期始動時点での致命的なエラーE_ERRORに 
似ているがPHPのコアによって発行される点が違う
E_CORE_WARNING  (致命的ではない警告PHPの初期始動時に発生する
 E_WARNINGに似ているがPHPのコアによって発行される 点が違う
E_COMPILE_ERROR コンパイル時の致命的なエラーE_ERRORに
 似ているがZendスクリプティングエンジンによって発行される点が違う
E_COMPILE_WARNING コンパイル時の警告致命的ではない)。
E_WARNINGに 似ているがZendスクリプティングエンジンによって発行される点が違う
E_USER_ERROR  ユーザーによって発行されるエラーメッセージ
E_ERROR に似ているがPHPコード上でtrigger_error()関数を 使用した場合に発行される点が違う
E_USER_WARNING  ユーザーによって発行される警告メッセージ
E_WARNING に似ているがPHPコード上でtrigger_error()関数を 使用した場合に発行される点が違う
E_USER_NOTICE ユーザーによって発行される注意メッセージ
E_NOTICEに に似ているがPHPコード上でtrigger_error()関数を 使用した場合に発行される点が違う
E_STRICT  コードの相互運用性や互換性を維持するために PHP がコードの変更を提案する
E_RECOVERABLE_ERROR キャッチできる致命的なエラー危険なエラーが発生したが、 
エンジンが不安定な状態になるほどではないことを表す
 ユーザー定義のハンドラでエラーがキャッチされなかった場合(set_error_handler() も参照ください
 E_ERROR として異常終了する
E_DEPRECATED  実行時の注意これを有効にすると
 将来のバージョンで動作しなくなるコードについての警告を受け取ることができる
E_USER_DEPRECATED ユーザー定義の警告メッセージこれは E_DEPRECATED と同等だが
 PHP のコード上で関数 trigger_error() によって作成されるという点が異なる
E_ALL サポートされる全てのエラーと警告。 PHP 5.4.0 より前のバージョンではE_STRICT レベルのエラーは除く


〇エラー表示に関する設定変更(480行目付近)
公開時にエラー内容が表示されるとエラーコメントから内部情報がわかってしまいます
そのため公開時はエラー表示設定をOffにします

開発時はエラー内容を表示させて修正をするためOnにします

公開時エラー表示しない
display_errors = Off

開発時エラー表示する
display_errors = On

〇HTTPヘッダに出力するデフォルト文字コード設定変更(709行目付近)
行頭に「; 」がついている設定はコメントとして扱われ無効化されています
もし設定が無効化されていた場合は行頭の「; 」を削除してください

変更前
  ; default_charset = "UTF-8"

変更後初期状態でこちらになっているはず
default_charset = "UTF-8"

〇マルチバイト文字に関する設定変更(1638行目付近)
マルチバイト文字で使用する言語を指定します
行頭の「; 」を削除して設定を有効にします

変更前
  ; mbstring.language = Japanese

変更後
mbstring.language = Japanese

〇自動文字エンコードの検出に関する設定変更(1676行目付近)
PHP内で使用する文字コードの検出順を指定します
行頭の「; 」を削除して設定を有効にしautoUTF - 8SJISEUC - JP
JISASCIIに変更します

変更前
  ; mbstring.detect_order = auto

変更後
mbstring.detect_order = UTF - 8SJISEUC - JPJISASCII

タイムゾーンに関する設定変更(1969行目付近)
タイムゾーンを変更します

変更前
date.timezone = Europe / Berlin

変更後
date.timezone = Asia / Tokyo

設定変更完了
変更後のphp.iniを保存して設定変更完了です

設定をXAMPPの反映
修正した設定をXAMPPに反映させます
一度apacheを停止させた後もう一度開始します
開始のタイミングで設定が読み込まれます


〇授業で使うサンプルコードのDL場所
htdocs別名ドキュメントルート

サーバー起動
ブラウザでlocalhost接続


〇ブラウザ表示確認
URLを入力すること



PHP 変数展開
  <? php
$name = '田中';
$today = '2019/5/26';

$text1 = " $today に $name はプログラムを勉強しています。";
// 正解
$text2 = "{$today}に{$name}はプログラムを勉強しています。";
// 正解
$text3 = '{$today}に{$name}はプログラムを勉強しています。';
//↑ シングルクォートだと記号を文字列として認識してしまう。変数展開が行われず。
// ダブルクォートで囲った文字列は変数展開が行われる。
$text4 = "$todayに$nameはプログラムを勉強しています。";
// ↑"$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><?</p>
  //             <p><?</p>
  //             <p><?</p>
  //             <p><?</p>
  //           </body>
  // </html>


  〇ヒアドキュメント
  <? php
// ファイル上部でロジカルな処理を記述
// 出力用の変数に必要な値を代入
$name = '田中';
$today = date('Y/m/d');
// date関数の呼出し(処理の呼び出し)
// 日付に関する処理

// 第一引数に日付の書式をもった文字列を指定
// Y=4桁の年
// m=2桁の月
// d=2桁の日にち
// 戻り値は引数で指定した書式に日時をあてはめた文字列
// 今日の日付だったら戻り値は2020/8/31
$text = << < EOD
  「<<<」の後ろで終端IDを指定し、\n
その終端IDが行頭に出てくるまでを文字列として扱います。\n
この"ヒアドキュメント"の中では'シングルクォート'や"ダブルクォート"をエスケープする必要がありません。<br>
  投稿者:{$name}<br>
    投稿日:{$today}
?>
// <!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 nl2br($text1); </p>
      nlbr2(変数名);→<br>を入れていなくてもブラウザでも改行してくれるコード


//             </body>
// </html>


ヒアドキュメント開始
$text=<<<EOD終端IDと呼ばれるものなんでもよい

          EODで囲まれた部分は” ”で囲まれた文字列と同じ扱い
          変数展開される文字列

          EOD← ヒアドキュメント終了
// 長い文章を扱うのが得意なので、長めのHTMLコードやメール本文や
// 処理完了メッセージ等に使用することが多い
// 終端ID前後に余計な記述を入れるとエラーになることがあるので注意