自分がラクをするための自動化のススメ--WebデザイナのためのPHP入門

たにぐちまこと(H2O Space.)
2008-04-01 17:00:00
  • このエントリーをはてなブックマークに追加

 これまでの2回で、PHPやデータベースの概要については理解していただけただろうか?

 そうは言っても、理解するのと実際に作業するのは別の話。自分にはとうてい作れないだろうし、プログラマという職業の人の話だと思われる方も少なくないかもしれない。

 確かに、本格的なスクリプトを自分で作ることは考えにくいかもしれないが、Webデザイナやマークアップエンジニアでも、まずは「自分がラクをするために」PHPを使ってみてはいかがだろう?

 今回は、PHPスクリプトの中でも、簡単に記述できてWebデザイナに役に立つサンプルをいくつか紹介したい。是非、気軽に利用してみて、できれば内容も理解してみてほしい。

コピーライト表記を自動化する

 Webサイトには必ずある「コピーライト表記」。たいていの場合、以下のように制作年を明記する。

Copyright© 2008 H2O Space. Co., Ltd. All Rights Reserverd.

 この表記、「制作年」なので更新しなくてよいようだが、やはりWebサイトが古く見えてしまうので毎年更新したいものだ。しかし、それを毎年全ページに対して行うのはあまりにも非効率。そこで、いつもの表記の代わりに、次のようなPHPスクリプトを記述してみよう。

Copyright©  H2O Space. Co., Ltd. All Rights Reserved.

 「date('Y')」という記述は、日付を操作する機能だ。大文字で「Y」というパラメータを指定することで、4桁の西暦年を取得することができる。これにより、毎年西暦年が更新されるというわけだ。

「date('Y')」を指定すると…… 「date('Y')」を指定すると……

 PHPのよいところは、JavaScriptなどの「クライアントサイドスクリプト」と違い、Webブラウザに表示される前に処理されて、HTMLは手で作ったものと変わらない情報になる点だ。たとえば、上記のスクリプトもWebブラウザでソースを表示すれば、PHPのスクリプトは消えてWebブラウザに表示されているものと同じ状態になる。そのため、SEOや音声ブラウザなどへの対応にも全く影響することなく、利用することができるのだ。

ヘッダーファイルなどを一元管理する

 Adobe Dreamweaverなどには「ライブラリ」という、外部のファイルを取り込むことで部品を一元管理することができるものが用意されている。これと同じような仕組みをPHPで作ることができる。

  • コメント(4件)
#1 D298   2008-04-02 10:16:41
includeで重複読み込みエラーが起きたときの解決方法を補足してもらえないでしょうか?
#2 h2ospace   2008-04-04 14:32:56
筆者です。
D298さん、ご質問ありがとうございます。

本文では触れなかったのですが、確かに includeというファンクションは同じファイルを何度も読み込もうとするとエラーが発生してしまいます。これを、防ぐ方法は残念ながらなく、別の手段を用いる必要があります。

簡単なのは、本文の3番目で触れた「変数」を使った例です。変数は、同じファイル内で何度も使うことができます。「ヒヤドキュメント」というテクニックを使えば、非常に長い文章も変数に入れることができますので、比較的簡単ですよ。次の例を参考にしてみてください。
/header.php
<?php
$header = <<<END
ここにヘッダーの内容を記述します。<br />
<strong>HTMLも記述することができます</strong><br />
↓この記述までが、変数に記憶されます。<br />
END;
?>

/index.php など
<?php
print($header);
?>
ここから、本文
#3 いが   2008-04-04 18:23:30
include_onceを使う方法もありますね。デザインだと繰り返しパターンもあるのでこちらを使うことも多いと思います。
http://jp2.php.net/manual/ja/function.include-once.php
#4 D298   2008-04-10 09:43:11
補足いただきありがとうございます。
ヒアドキュメントのincludeは重複して行われても変数に格納される内容が同じであれば定数的に扱えるので出力の指示が適切になされていれば問題が発生しにくい、と理解しました。includeされる内容が変数として扱えるというのは大きなメリットですね。
include_onceは、たとえば、画面要素をパーツで開発しているときにinclude_onceを使って外部定義を取り込むようにすれば、結合時に重複定義のような問題の発生を防ぐとこができる、というイメージでいいのかな?Functionやコードの取り込みはinclude_onceだと安心できそうですね。

ドキュメントデータと制御用コードでincludeの方法を使い分けると幸せになれる、ということですね。
  • 新着記事
  • 特集
  • ブログ