23:33 03.16.2008
PHPの出力を、Javascriptのdocument.writeで書き出すクラス。
最近のmotooさんのPHPプログラミングの手法として、ちょいとしたPHPの出力は、Javascriptとして出力することが多いんです。
たとえば企業サイトの新着情報。デザイナーさんにデザインをお願いして、上がってくるHTMLファイル。80%はHTMLという拡張子が着いて納品されます。で、もれなく他のページからのリンクもindex.htmlへリンクされているわけです。
「index.html→index.phpに変更してくんない?」
なんてお願いするのも面倒なんで、新着情報の数行の部分だけ外部Javascriptとして読み込むようにして、実際のそのJavascriptはPHPでコーディングするわけです。
ちまたでは、ブログパーツの配布方法としてよく使われているもんだと思ってたんですが、最近ウチの会社に入ってきたSプログラマーから、「motooさん、コレ便利っすねー」と言われたもんだから、調子に乗って、クラス化してみました。
javaScript.php
<?php
class javaScript{
// メンバ変数設定
var $output_header = false;
// コンストラクタ
function javaScript()
{
$this->printHeader();
}
// コネクションハンドルを返す
function printHeader()
{
if ($this->output_header == false)
{
header("Content-type: text/javascript");
$this->output_header = true;
}
}
// document.writeの書き出し
function documentWrite($contents = "")
{
$this->printHeader();
//無理やり配列化!
if (!is_array ($contents)) $contents = array ($contents);
foreach ($contents as $line)
{
//クォートにスラッシュ追加
$line = str_replace("'", "\'", $line);
$line = str_replace('"', '\"', $line);
//改行削除
$line = ereg_replace("\n|\r|\r\n", "", $line);
print("document.write('{$line}');\n");
}
return true;
}
}
?>
で、実際に使う場合には
<?
require_once "javaScript.php";
// Javascript作成
$js = new javaScript;
$lines = array("abc", "123", "あいうえお");
$js->documentWrite($lines);
$lines = '<img src="hoge.jpg">';
$js->documentWrite($lines);
$lines = "Welcome to MOTOO's HOME page!!";
$js->documentWrite($lines);
?>
ってな感じっすか。