【連載】春の新入社員におくるPHP超入門 ~ その2:文字列の出力 – Hello World! –

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【6/19開催】Kong Community Japan Meetup #4
本イベントでは、Kong Inc. のVP of ProductであるReza Shafii氏もプレゼンターとして参加。当社からはアーキテクト マネージャーの槌野の登壇が決定!参加無料です!!
https://column.api-ecosystem.sios.jp/connect/kong/1081/

【6/21開催】開発者目線でのSBOMとの向き合い方
SBOMの導入から開発者がSBOMの作成・管理を自動で行っていくための方法(デモ)を紹介します。SBOMを全く知らない人から、開発との統合までを紹介するので様々なレベルの方に学びがあるライブとなる予定です!
https://tech-lab.connpass.com/event/321422/

【7/19開催】現場で役立つAzure神小技10+α 〜生成AI,RAG,コスト削減など旬な技術満載のLT大会〜
Azureの最新技術や実用的な小技を紹介する特別なライトニングトーク大会を開催します!
https://tech-lab.connpass.com/event/319077/

【7/26開催】最適なIaCツールを選ぼう
プロジェクトでのツール選びに困らないための重要な観点をご説明します!
https://tech-lab.connpass.com/event/319532/

こんにちは。サイオステクノロジーの川田です。

PHPを始めてみよう!触ってみよう!と考えている方向けへのPHP超入門をお届けしております。
今回は第2回目となります。

タイトルにもある通り、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文 –

最後までお読みいただきましてありがとうございました(^ω^)

アバター画像
About kawada 25 Articles
Webアプリケーション開発を行っており、プログラミング初心者向けの記事や動画編集に関する内容を中心とした記事を執筆しています。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる