【第六回】PHPでシステム開発を実践!基本的な構文③

はじめに

これまでechoで、文字の出力や計算などを行っていきました。

文字の表示や計算方法については、「【第四回】PHPでシステム開発を実践!基本的な構文①」と「【第五回】PHPでシステム開発を実践!基本的な構文②」で触れていますので、もしよろしければご覧下さい。

それでは文字と計算結果を同じ文字列で表示させるにはどうしましょうか。
例えば「1+2の計算結果は、3です。」という一文の表示や「現在時刻は〇時〇分です。」というような表示などです。

今回は、このような文字列の連結や現在時刻の表示、構造化プログラミングとオブジェクト指向プログラミング、変数について簡単に取り上げていこうと思います。

文字列連結

先ほども少し例を取り上げましたが、これまでechoを使って文字や計算結果の表示をしてきました。
ただ文字をそのまま表示させる場合と計算結果を表示させる場合でそれぞれecho以降の書き方が違いました。

<?php echo ‘1+2の計算結果は、3です。’; ?>
<?php echo 1+2; ?>

こちらの文字と計算結果を一文で表示させたい際に文字列連結というものを使います。
文字列を連結する際に使用するのが.(ドット)です。ドットは連結部分に使用します。

上記の例の場合ですと、「1+2の計算結果は、」と「です。」は文字列となり、クォーテーション記号で囲む必要があります。
ただ計算式は、クォーテーション記号で囲みません。
以上のことを踏まえて、まとめてみますと

<?php echo ‘1+2の計算結果は、’ . 1+2 . ‘です。’; ?>

となります。
この際、文字列連結の前後に1文字分の半角スペースを入れましょう。エラーになってしまう場合があります。
PHP文字列連結
上書き保存し、ブラウザで表示を確認してみましょう。
PHP文字列連結ブラウザ
「1+2の計算結果は、3です。」と表示されていれば、正しく動いていることになります。
このように文字列とプログラムの処理が必要なものを連結する際に.(ドット)を使用します。

参考:文字列演算子

現在時刻

次はPHPで現在時刻を出力する方法についてです。
こちらも出力としてechoを使っていきます。
そして現在時刻を呼び出すためにdate()という関数を使います。

まずは試しに

<?php echo date(‘G時 i分 s秒’); ?>

と入力してみましょう。アルファベット部分は半角文字です。
PHP日付関数
上書き保存し、ブラウザで表示を確認してみます。
PHP日付関数ブラウザ
すると時間が表示され、ブラウザを更新しますと秒数が変わります。

先ほど入力したdate()ですが、こちらは日付や時間を扱うための日付関数です。
時間部分に入力していますG、i、sといったアルファベットは、表示させたい書式を指定しています。
こちらを書式指定子といいます。
今回の場合ですと、時間の書式はG、分数の書式はi、秒数の書式はsとしています。
大文字、小文字でも区別されており、Gですと書式は先頭に0が付かない24時間単位の時間部分を表しています。
iは書式が00~59までの数で分を表しており、sは書式が00~59までの数で秒を表しています。

こちらについては参考として掲載しているサイトのように、調べてみますと一覧で何を表している書式なのか載せてくれているサイトがたくさんありますので調べてみましょう。

ここで既にお気づきかと思いますが、表示されている時間が現在時刻とは違うかと思います。
こちら理由は、日本の時間ではなく海外の現在時刻が表示されているためです。
標準で設定されているタイムゾーンが日本の時刻とずれているため、こちらを日本時間に設定していきます。

先ほど入力したプログラムの前に新たに

<?php date_default_timezone_set(‘Asia/Tokyo’); ?>

と入力してみましょう。
PHPタイムゾーン
上書き保存し、ブラウザを更新して確認してみます。
PHPタイムゾーン日本
すると現在時刻が正しく表示されるようになったかと思います。

こちらdate_default_timezone_set()という関数を使い、タイムゾーンを設定しました。
カッコ内に基準としたい地域を指定します。
地域名を入力する際は、頭文字をそれぞれ大文字にすることに注意してください。

文字列連結

ちなみにこちらも文字列連結を使って、文字と組み合わせることができます。
例えば「現在の時刻は、〇時〇分〇秒です。」という文章を表示させてみたいと思います。

最初に日本の現在時刻を表示させるために
<?php date_default_timezone_set(‘Asia/Tokyo’); ?>
と入力し、その次の行に
<?php echo ‘現在の時刻は、’ . date(‘G時 i分 s秒’) . ‘です。’; ?>
と入力します。
PHP現在時刻文字列連結
上書き保存をし、ブラウザを更新して確認してみます。
PHP現在時刻文字列連結
現在の時刻が合っていましたら正しく動いていることになります。

参考:date
参考:標準の日時書式指定文字列
参考:PHP 日付のフォーマット date()/strtotime()/DateTimeクラス
参考:date_default_timezone_set
参考:【PHP入門】date_default_timezone_setの使い方

構造化プログラミングとオブジェクト指向プログラミング

PHPは30年近くの歴史があり、その変遷の中でプログラムの組み方も変わっています。
最初は「構造化プログラミング」という手法を主に使っていました。
ただ途中から「オブジェクト指向プログラミング」という新たな手法が出てきまして、今ではこちらの方が一般的になっています。

先ほど現在時刻を表示させる際に使った手法などこれまでに取り上げてきましたプログラムは「構造化プログラミング」で作っています。
ここで先ほどの「現在の時刻は、〇時〇分〇秒です。」という文章をオブジェクト指向で表示させてみようと思います。
PHPオブジェクト指向
上の画像のように書き換えてみますと先ほどと同じようにブラウザに表示されます。
こちらオブジェクト指向の手法にする際、オブジェクトというものを準備しなくてはいけず、今回の場合ですと$todayがそれにあたります。

最初に$today = new DateTime();というプログラムを入力していますが、この1文で$todayという名前でDateTime()を使って日付や時間を扱うオブジェクトを新しく作るという宣言をしています。
そして次の行でsetTimezone()というメソッドと呼ばれるものを使い、カッコの中に新たにDateTimeZone()というオブジェクトを指定し、日本の時刻にしています。
このメソッドを使用する際は、矢印のような形で$today->setTimezone()というように$todayと結びます。
そして最後に同じようにformat()というメソッドに$todayをセットし、日本の現在時刻を表示しています。

オブジェクト指向の方が分かりづらく難しいと感じるかと思いますが、複雑な大きなプログラムを組む必要がある時では構造化プログラミングですと管理が大変になるため、オブジェクト指向の方がオブジェクトでまとめることができ、管理しやすくなります。

ただ最初は特にオブジェクト指向は、やはり難しさを感じ作業が進めづらくなってしまいますので、こちらのブログでは簡単なプログラムであれば構造化プログラムの手法を使っていく予定です。
ある程度、基本的なところを習得されましたら、今度はオブジェクト指向の手法でプログラムを組むなどオブジェクト指向にも慣れていきましょう。

参考:【PHP入門】オブジェクト指向の学習は避けられない!基礎から解説
参考:DateTime クラス
参考:構造化プログラミングをわかりやすく学ぶ!概要からオブジェクト指向との違いまでを解説します。

変数

先ほどオブジェクト指向でプログラムを組みましたが、その中に$todayというものを定義しました。
こちらを変数といいます。
PHPでは、変数は$(ドルマーク)から始まります。
$の後に変数名を指定しますが、変数名には命名規則というものがあります。
例えば大文字、小文字を区別し、数字から始まる名前にしてしまいますとエラーとなるということなどがあります。
また、日本語も好ましくないといわれています。
こちらについては参考サイトとして以下にURLを貼り付けますのでご覧ください。

それでは変数について簡単な例を用いて記載していこうと思います。
例えば以下のように入力してみます。

<?php
$sum = 1+2+3;
echo $sum;
?>
PHP変数
上書き保存をし、ブラウザを更新して表示を確認してみます。
PHP変数ブラウザ
すると6と表示されます。

こちら最初に変数$sumを指定し、その中に1+2+3と計算式を代入しました。
そのため$sumの中には計算結果である6が入っていることになり、その6をechoでブラウザに表示させています。

文字だけですと分かりづらいかと思いますが、変数を1つの箱と考え、その中に数値などを入れているというようにイメージしていただくと飲み込みやすいかもしれません。
変数を使いますと後々、修正する際や他で再利用する際にとても便利です。
かなり良く使いますので、覚えておきましょう。

参考:【PHP入門】これで完璧! 5分でわかる変数の基本徹底解説
参考:PHPの変数名

まとめ

徐々にブログの内容が複雑になってきていますが、ここまでいかがでしょうか。
これまで取り上げてきたものは、良く使う基本的なものばかりです。
最初はとっつきにくい部分もあるかもしれませんが、プログラムを組んでいるうちに慣れてくるかと思います。
引き続き、この調子で進めていきましょう。

この記事をシェアしましょう!