PHP、MySQL、JavaScriptによるセキュアなインターネットファイル共有システムの作成
Smartyを利用したテンプレートとロジックの分離
ダウンロード サンプルソース (14.8 KB)
overLIBとポップアップメニュー
PHPコードがサーバーサイドですべての処理を行わなければならない場合は、ワークフロープロセスが長くなりすぎるかもしれません。インタラクションを若干短縮するソリューションとしてJavaScriptのポップアップがありますが、JavaScriptを構成に挿入すると、許容しがたいエントロピーが生じて、ビジネスロジックとテンプレートロジックとの分離が著しく損なわれます。Smartyには、overLIBという非常に便利で強力なJavaScriptライブラリが埋め込まれています。SmartyのWebサイトによると、overLIBは「小さいポップアップ情報ボックスでWebサイトを拡張するために作成されたJavaScriptライブラリ」だそうです。
Smartyは、overLIBを非常に単純な{popup ... }という構成体と統合します。ファイル「inc.file_list.tpl」で、overLIBの実際の使用例を見ることができます。
{include file='files.pop.tpl' assign='filePop'}
...
<a href="{$smarty.server.PHP_SELF}?id={$file.id}¬_crypted=1"
{popup
trigger=onClick
width=360
sticky=true
caption='Action'
closeclick=true
text=$filePop
}
>{$file.filename}</a>
...
このコード例は、overLIBポップアップを1つの命令に接続する方法を示しています。ここに示したすべてのoverLIBパラメータを設定することで、ポップアップ用のHTMLコードを別のファイル「files.pop.tpl」に分離することができます。
PHPコードの改良
コーディング中に適切なインデントやスペーシング規則を設定することはなかなか大変です。この目的には、PEAR PHP_Beautifierが大いに役立ちます。インストール方法は次のとおりです。
pear install PHP_Beautifier
使用するときには、コマンドラインで次のコマンドを実行します。
php_beautifier [some_file].php --output new_file.php
出力結果の「new_file.php」ファイルは適切に整形され、読みやすさが大きく向上します。
さらに、PEARには、一連のコーディング標準も用意されています。たとえば、フィルタのメカニズムを使ってコードをフォーマットするには、次のように実行します。
php_beautifier --filters "Pear()" [some_file].php --output new_file.php
私はもともと、自分の専門外であるHTMLやCSSのコーディングを避けて、経験豊富なグラフィックデザイナにプレゼンテーションを簡単に任せられるようにするために、小さいインターネットファイル共有アプリケーションのプレゼンテーションをロジックから切り離す方法を探していました。そこで結果的にできあがったのが、データベース抽象化レイヤを使い、オープンソースのライブラリとフレームワークを取り入れてHTMLのデザインをPHPプログラミングから切り離した実践例です。この例を活用することで、ユーザーが安心してファイルを共有し、タグとメタデータでファイルを分類できるインターネットファイル共有アプリケーションを作成することができます。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- japan.internet.com翻訳記事連載記事一覧
- この記事の著者
-
japan.internet.com(ジャパンインターネットコム)
japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
Roberto Giorgetti(Roberto Giorgetti)
イタリアに拠点を置くITマネージャ、テクニカルライター。主にビジネス分野と工業分野でオープンソースの開発に従事。核工学の学位を持つ。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
