こんにちは。サイオステクノロジーの川田です。
PHPを始めてみよう!触ってみよう!と考えている方向けへのPHP超入門をお届けしております。
今回は第2回目となります。
アジェンダ
-
-
-
- 環境構築 – Visual Studio Code × Docker –
- イマココ☞ 文字列の出力 – Hello World! –
- 条件分岐 – if文・switch文 –
- 繰り返し処理 – while文・for文・foreach文 –
- 関数 – function –
- HTTP/HTTPS – GET・POST –
-
-
タイトルにもある通り、Hello Worldを表示させていきたいと思います。
使用するツールはこちらです。
環境の詳細についてはアジェンダの「1.環境構築」へ(/・ω・)/
-
Visual Studio Code
拡張機能:Remote Development - Docker
目次
ディレクトリ構成
今回のディレクトリ構成は以下の通りです。
|― sample/ | |― html/ | | |― template/ | | | |― sample3.html | | |― sample1.php | | |― sample2.php | | |― sample3.php
3パターンの文字列の出力を行っていきたいと思います。
また、同じような処理をもつ「echo」「print」や「include」「require」の違いも実際に動作しながら確認していきます。
echoとprintの違い
文字の出力には「☞echo」や「☞print」を使うことが多いです。
これらは関数ではなく言語構造と言われます。
例えばif文やfor文も言語構造に該当します。
同じ出力ですが、違いは何なのか!!
- echoは文になりますが、printは式になります。
- echoは1 つ以上の文字列を出力しますが、printはできない。
では実際にsample1.phpで試してみましょう。
sample1.phpにこのように記載してください。
<?php $result_e = echo "Hello World!"; $result_p = print "Hello World!";
echoの方にはParse errorが表示されているかと思います。
これが先ほど出ました違いの1つになります。
echoは文になりますが、printは式になります。
Parse error: syntax error, unexpected 'echo' (T_ECHO) in /var/www/html/sample1.php on line 2
echoは戻り値を返さないのでエラーになりますが、printは常に1を返します。
1を返すとはどういうことか、試しに確認してみます。
$result_pをpriintしてみます。
<?php // $result_e = echo "Hello World!"; $result_p = print "Hello World!"; print $result_p;
■実行結果
Hello World!1
Hello World!の後ろに「1」が返されています。
あまりこのような書き方することはないですが、printは1を返していることがわかります。
では2つ目の違いも確認してみましょう。
echoは1 つ以上の文字列を出力しますが、printはできない。
sample1.phpを以下のように修正してください。
今度はprintの方がParse errorになっているかと思います。
<?php echo "Hello", "World!"; print "Hello", "World!";
Parse error: syntax error, unexpected ',' in /var/www/html/sample1.php on line 3
printは単一の引数しか受け取れないため、エラーとなります。
※「,(カンマ)」ではなく、「.(ドット)」の場合であれば文字列の連結なのでエラーにはなりません。
複数の引数を受け取ることができるechoを確認してみます。
<?php echo "Hello", "World!"; // print "Hello", "World!";
■実行結果
HelloWorld!
「HelloWorld!」が出力されました。
今回は違いを2つご紹介致しました。ここから先は「echo」を使っていきます。
HTML内に記述
PHPのコードをHTML内に記述するには、開始タグと終了タグが必要になります。
<?php ・・・ ?>の書き方
開始タグ「 <?php 」と終了タグ「?> 」で囲います。
ではsample2.phpに以下を記述し動作を確認してみます。8行目にphpコードが記載されています。
<!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>サンプル2</title> </head> <body> <?php echo "Hello World!!"; ?> </body> </html>
https://localhost:8080/sample2.phpにアクセスすると「Hello World!! 」が表示されました!
<?= ・・・ ?>の書き方
「<?php 」を短縮する書き方もあります。それが開始タグ「<?=」と終了タグ「?>」という書き方です。
この書き方にするとechoも省略ができてしまいます。8~9行目を修正しました。
※<br/>は見やすくするために改行をいれています。
<!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>サンプル2</title> </head> <body> <?php echo "Hello World!!<br/>"; ?> <?= "Hello World!!!!"; ?> </body> </html>
<? ・・・ ?>の書き方
開始タグ「<?」と終了タグ「?>」という書き方もあります。echoは省略できません!
9行目に改行を入れて10行目を追加してみます。
<!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>サンプル2</title> </head> <body> <?php echo "Hello World!!<br/>"; ?> <?= "Hello World!!!!<br/>"; ?> <? echo "Hello World★★" ?> </body> </html>
以上がHTML内に書く方法でした^^
ファイル読み込み
そして最後はファイルを読み込む方法についてご紹介していきます。
外部のファイルを読み込む場合は「☞include」や「☞require」を使います。
この2つの違いってなんだろう!?違いを見てみましょう。
includeとrequireの違い
違いについては失敗した際に動作が異なるということ。
- include:警告(☞E_WARNING)を出して、そのままプログラムが実行されること。
- require:☞E_COMPILE_ERRORレベルの致命的なエラーを発生し、処理が終了すること。
では実際に書いてみます。sample3.phpを作成します。
<?php $sample = "Hello World!!!!"; include __DIR__."/template/sample3.html"; echo "test";
sample3.htmlを作成していないため、画像のようにエラーメッセージが出ていると思います。
処理は最後まで続行され、5行目にechoした文字列が表示されていることがわかります。
それでは次にrequireを試してみましょう。include⇒requireに修正します。
<?php $sample = "Hello World!!!!"; require __DIR__."/template/sample3.html"; echo "test";
同じようなエラーメッセージですが、5行目にechoした文字列は表示されていません。
4行目でエラーになり、そのあとは実行されず処理が終了したからです。
以上が「include」と「require」の違いでした。使い分けが大事ですね。
それでは正常に読み込んで表示させていきましょう!
「Hello World」表示
templateディレクトリを作成し、sample3.htmlを以下のように修正します。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>サンプル3</title> </head> <body> <p><?=$sample?></p> </body> </html>
sample3.phpはそのままで、アクセスするとちゃんと表示されました\(^o^)/
まとめ
いかがでしたか?
今回は様々なパターンの基本的な文字列表示をやってみました^^
次回は条件分岐をご紹介致します。
第3回☞条件分岐 – if文とswitch文 –
最後までお読みいただきましてありがとうございました(^ω^)