それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

拡張子 CSSもJavaScriptもPHPで処理しちゃう話

PHP触ってると、JSやCSSが時々面倒な時がありまして。

JS/CSSPHPで出力すりゃいいのです。

PHPJavascriptをちょこっと修正したり、

サーバー変数取りに行くのに js でいちいちAjaxするとか

ちょっとJSをGET引数毎に処理変えたいだけとか。

スタイルシートに変数を導入したいから、PHPで書いたり。

ちょっとだけ使えたら便利な場面ってあると思うんです。

でも、拡張子phpcssを読み込むのは使いにくいので・・・

それなら 拡張子 js を php で処理しちゃえば?

js / cssphp に関連付ける

悪魔の囁きに乗って、やってみることにした。

.htaccessでハンドラをPHPにする

拡張子 .js と 拡張子 .css の処理をPHPに任せる。

styles/.htaccess

AddHandler php-script .php
AddHandler php-script .css

scripts/.htaccess

AddHandler php-script .php
AddHandler php-script .js

として、.htaccessで関連付けを変更した。

.user.ini で content-type を指定する

そのままでは javascriptと stylesheet が content-type : text/htmlで配信されて格好が悪いので、それぞれのフォルダでPHPのcontent-typeを変えておいた。

styles/.user.ini

default_mimetype = "text/css"

scripts/.user.ini

default_mimetype = "text/javascript"

実行結果

takuya@rena:~/Sites/todo/scripts$ curl -I http://localhost/~takuya/todo/scripts/tasks.js
HTTP/1.1 200 OK
Date: Wed, 02 Jul 2014 09:17:22 GMT
Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.24 mod_ssl/2.2.26 OpenSSL/0.9.8y
X-Powered-By: PHP/5.5.11
Content-Type: text/javascript

X-Powered-By: PHP/5.5.11 ちゃんと処理されてますね。安心

何の役にも立たない?

意外と役に立つんですよ。サーバーの全然別のところにあるJSをついでに読み込んだり、文字列をちょっとフォーマットしたり、サーバーのパスを変換したり

<?php
include "default.css.php";
$width = 600;
$color = "#3d3d3d";
?>

#main{
 background-color  = <?= $color;?>
 width: <?= $width;?>

}

それなりに使えそうな気はする。

あとは活用アイディア次第かな。

追記

どうせ、リバースプロキシでキャッシュするんだから、CGIでキャッシュ設定かいて、nodeやSASSに処理任せるCGI書いてハンドラ作っちゃえば良かったよね。

nodeは、ともかく、 コメントアウトに// を使いたい程度で Sassを覚えるのも面倒だしね・・・

php でかいて ob_handler でサクッと処理しちゃえばよかったんだよ。