PHP学習のススメ 第2回:ファンクションを覚えよう
Dreamweaverl CC (2013年06月公開) 対応
この連載ではPHPそのものの紹介というよりは「PHPを学習するためには、どんな準備が必要か」という部分に焦点を当て紹介していきたいと思います。PHPの入門書籍を読み始める前に、ぜひ本連載で準備を整えてください。
PHPでプログラムを作る上で最も大切な要素は「ファンクション」(または「関数」とも呼ばれます)です。ファンクション(function)は、「機能」という意味を持つ英単語で、PHPに「やって欲しいこと」を伝える役割を担います。
例えば、次のような日付のテキストエリアに、PHPのファンクションを使って今日の日付が自動的に入るようにしてみましょう。
PHPのファンクションを使って今日の日付を取得し、テキストエリアに表示してみます
サンプルを作ってみよう
まずは第1回を参考に、開発環境を整え、Dreamweaverに「サイト」を構築します。[ファイル]メニューバー→[新規]を選んで[新規ドキュメント]ダイアログボックスを表示したら、[ページタイプ]を「PHP」に設定して、新規ファイルを作成します。
[新規ドキュメント]ダイアログボックスで「PHP」に設定して、新規ファイルを作成します
[デザインビュー]で[挿入]パネルなどを活用して、次のようなフォームを構築します。
<form action=””> <label for=”date”>ご注文日:</label> <input type=”date” name=”date” id=”date”> </form>
ここに、プログラムを書き加えていきます。まず、冒頭に「date_default_timezone_set」と記入する必要があります。[コードビュー]でbody要素の直後に、次のように書き込んでいきましょう。
<?php date [コードビュー]で上記コードを書きます
行頭が赤く色付けされますが、これはPHPの開始タグ(<?php)に対する終了タグがないことを警告しています。今の時点では気にしなくて構いません。
そして、ここで「Control+スペース」を押します(OS X/Windowsともに)。すると、次のような「コードヒント」が表示されます。[編集]メニューバー→[コードヒントを表示]でも同じものが表示されます。
コードヒントを表示したところ
コードヒントには、「date…」から始まる「ファンクション」の名前がずらっと並びます。ここから「date_default_timezone_set」を選びましょう。…_getと間違えやすいので気をつけましょう。
選んだ状態でダブルクリックするか、キーボードでEnterキーを押すと、[コードビュー]に自動で挿入されるとともに、今度は黄色いツールチップが表示されます。
「date_default_timezone_set」が自動挿入され、黄色いツールチップが表示されます
続いて、次のように書き加えます。
<?php date_default_timezone_set(‘Asia/Tokyo’); ?>
次に、テキストフィールドにvalue属性を追加します。タグの最後にvalue属性を追加して、次のように書き加えます。
<input type=”date” name=”date” id=”date” value=”<?php print(date(‘Y-m-d’)); ?>”>
途中でコードヒントを表示すれば、先と同様にコードヒントを使って打ち込むこともできます。こうして、プログラムが完成したら[ライブビュー]で表示してみましょう。
[ライブビュー]ではPHPの動作を確認できます。テキストエリアに今日の日付が入っています
ファンクションを学ぼう
このプログラムでは「date」というファンクションを中心にしたプログラムを作ってみました。「date」は日時を司るファンクションで、今日の日付や現在の時刻、今年があと何日残っているかなど、様々なことを通知してくれる便利な機能を持っています。
PHPには非常に数多くのファンクションがあります。例えば、ファイルの適当な場所に次のように記述します。
<?
そして、「Control+スペース」を押すと、ファンクションや定数などの一覧が表示されます。その中で、赤い四角のマークがファンクションです。
コードヒントにファンクションや定数などの一覧が表示されます
気になったファンクションにカーソルを合わせてしばらく待つと、コードヘルプ(意味や使い方など)を見ることができます。例えば、「date」のコードヘルプを見ると、次の図のように書かれています。
「date」ファンクションのコードヘルプ
説明の言葉は少し難しいですが、これは英語のオフィシャルドキュメントを翻訳したためです。わかりやすく翻訳した「リファレンス本」なども書店に売られているため、それらを購入してもいいでしょう。
ファンクションの要「パラメータ」
ファンクションは、それを記述するだけでは正しく動作しません。細かな指示を「パラメータ」を使って与える必要があります。例えば、先のプログラムで記述したdate_default_timezone_setファンクションを見てみましょう。このファンクションは、コードヘルプには次のように記述されています。
> スクリプト中の日付/時刻関数で使用されるデフォルトタイムゾーンを設定する
つまり、日付の「タイムゾーン」を設定するというものです。PHPは通常「GMT(世界標準時)」で動作しています。日本国内のタイムゾーンにセットするには、このファンクションを使って設定する必要があります。
date_default_timezone_setファンクションはパラメータを1つ取ります。コードヘルプには次のように記述されています。
string $timezone_identifier
これは「string(文字列)で、タイムゾーンの識別子」を指定する必要があるという意味です。そこで、日本を示す「Asia/Tokyo」を指定するため、次のように記述するというわけです。
date_default_timezone_set(‘Asia/Tokyo’);
このようにDreamweaverを利用すれば、コードヘルプやツールチップなどを頼りに、ファンクションやパラメータを記述することができます。
省略できるパラメータ
今度は、dateファンクションを見てみましょう。dateファンクションのパラメータは次のようになっています。
string $format [, int $timestamp ]
これは「string(文字列)でフォーマット、int(整数)でタイムスタンプ」を指定する必要があると説明されています。つまり、2つのパラメータを指定する必要があるということです。複数のパラメータを指定する場合は、カッコ内にカンマ区切りで指定します。
date(‘Y-m-d’, 1369133847);
「タイムスタンプ」とは、コンピュータの世界で利用される数字で「1970年1月1日00:00」からの通算の秒数を使って日付を表す方法です。これを指定することで、dateファンクションは好きな日付の日時を操ることができるというわけです。
しかし、この2つ目のパラメータはよく見ると角括弧([ ])で囲まれています。これは「省略可能なパラメータ」であることを示しています。つまり、次のような指定も可能なのです。
date(‘Y-m-d’);
これにより、2つ目のパラメータには「標準値(またはデフォルト値)」が指定されたことになり、ここでは「現在」が指定されたのと同じ意味になります。
このようにパラメータは、ファンクションによっても数が異なり、また省略可能なものと必須なものがあります。慣れるまでは複雑に感じますが、各ファンクションのリファレンスをしっかり確認しながら、徐々に使い慣れていくといいでしょう。
ファンクションはこんな風に学習しよう
PHPのプログラムを学習する時、ファンクションを知るというのは英語の学習で単語を覚えるのと同じことです。どれだけの種類のファンクションを知っているかが、プログラムをスムーズに作るときの助けになります。
とはいえ、受験勉強で単語帳を使って暗記をしたのと同じように、すべてのファンクションを暗記しようとするのは、あまり効率的とはいえません。使い方と合わせて徐々に覚えていくのがいいでしょう。そこで、筆者がオススメする学習方法は次の通りです。
- 入門書を買ってきて、掲載されているサンプルプログラムを実際に打ち込みます。
- その際、知らないファンクションの場合はコードヒントを表示して、その使い方などを学び、パラメータなども単に書き写すだけではなくて、何を意味するパラメータなのかを見ておきましょう。
- できれば、今度は入門書は見ずにコードヒントだけを頼りに、今作ったプログラムを作れるかを試します。詰まってしまったり、うまく動かなかったら改めて書き写してみて、できるまで何度もチャレンジしてみましょう。
もしその時、そのファンクションが何をやっているものなのか分からなくても、それほど気にする必要はありません。何度も登場するうちに、徐々に使い方のパターンが見えてきます。
それよりは、できるだけ入門書を見なくても、ある程度打ち込めるようになることが、その後のスムーズな学習を助けることになります(これは、英語のフレーズを丸暗記して、とりあえず口に出るようにすると、徐々に他の会話もスムーズになっていくのに似ています)。
プログラムの学習は、初めのうちは訓練に近い感じもあります。しかし、それを乗り越えるとグッとスムーズに学習することができるようになるので、ぜひ飽きないように楽しみながら学習を続けていくといいでしょう。