[PHP]コピーライトの西暦を動的化する

Read More

コピーライトってのはサイトのフッター部に表記されている、
「Copyright (c) 2011 XXXXX.com All Rights Reserved.」
のこと。

著作権を主張するアレです。


2011って表記されていると、
「2011にサイト公開しました」という意味になる。

これが2010 - 2011って表記になると、
「2010にサイト公開、2011がサイトを更新した年」って意味になる。


ずーっとサイトを更新していくと仮定した場合、毎年毎年フッター部を触って修正するのははっきり言って面倒。
絶対忘れてしまいそう。



ってことでここはPHPで動的化しよう。



■簡単な方法
Copyright &copy; 2011<?=(2011-date('Y'))?' - '.date('Y'):'';?> XXXXX.com All Rights Reserved.
date('Y')は年を取得する標準関数。


これで2011年中は
Copyright (c) 2011 XXXXX.com All Rights Reserved.
って表示され、

2012年になると自動的に
Copyright (c) 2011 - 2012 XXXXX.com All Rights Reserved.
って表示に切り替わる。


同じような動きをする自作関数はこちら↓
■自作関数を使う方法
<?php
/**
 * コピーライト文字列を返す
 * @param string $name
 * @param integer $since
 * @param integer $now
 * @return string
 */
function copyright($name, $since, $now=null) {
 $between = $since;
 if(is_null($now)) {
  $now=date('Y');
 }// end if
 if($since - $now) {
  $between .= ' - '. $now;
 }// end if
 $str="Copyright &copy; $between $name All Rights Reserved.";
 return $str;
}// end function
?>
<?=copyright('XXXXX.com', 2010)?>

第三引数を用意しているのはサイト更新と連動させたい場合に使う。
例えばDBに保存しているの最終更新日を取得してここに当て込む。
こうすることでより正確なものが作れる。



--
個人的には自作関数を使うよりもベタ書きのが良いと思っている。

理由はCSSとか改行とか使ったりする場合もありえるので常に文字列は触れる状態にしておきたいから。

文字列全てを関数内に入れ込んでしまうとWebデザイナが触る時に苦労する。
なんでもかんでもカプセル化すればいいってもんじゃない。



あと、XXXXX.comは共通ファイルの定数にするのが良い。



ってことでまとめると、
// 事前にdefine('SITE_NAME', 'XXXXX.com');を定義

Copyright &copy; 2011<?=(2011-date('Y'))?' - '.date('Y'):'';?> <?=SITE_NAME?> All Rights Reserved.

となる。