横浜の業務用ソフトウェア開発やPHPを使ったWEBシステム開発・ホームページ制作ならアイ・エヌ・ワークスにお任せください。

横浜のホームページ制作ページ
  • home
  • 会社概要
  • 制作実績
  • 価格
  • ダウンロード
  • ブログ
  • お問い合せ
ホーム > ブログ

【横浜のWeb制作業者】ブログ

  • home
  • 横浜のホームページ制作・アイエヌワークス会社概要
  • 横浜のソフトウェア開発・アイエヌワークスの制作実績
  • 横浜のWebサイト制作・アイエヌワークスの価格
  • ダウンロード
  • 横浜のウェブ制作・アイエヌワークスのブログ
  • 横浜のWebシステム・アイエヌワークスへのお問い合せ

CentOS5にPHPUnitを導入するついでにxdebugもインストールする際、ちょっとはまったのでメモ。

# yum -y install php-devel (<-xdebugをpeclでインストールする場合に必要)
# pecl install -a xdebug

ところが下記のエラーで止まる。

Fatal error: Allowed memory size of 8388608 bytes exhausted

pearのバグらしいので設定ファイル(/usr/share/pear/pearcmd.php)を修正する。
以下のコードを適当な場所に追加する。

@ini_set('memory_limit', '16M');

これでコンパイル&インストールは通った。

xdebugの設定ファイル(/etc/php.d/xdebug.ini)を作成する。
下記の内容でxdebug.iniファイル作成する。

zend_extension=/usr/lib/php/modules/xdebug.so

インストールが成功したかどうかは下記のコマンドで確かめる。

$ php -i | grep -i "xdebug support"
xdebug support => enabled

参考URL

[php]PECLコマンドが成功するまでのエラー解決備忘録(imagick編)


http://d.hatena.ne.jp/snegishi/20071212/1197422664
http://winofsql.jp/VA003334/php051120172152.htm
http://gihyo.jp/dev/feature/01/php-test/0003?page=5

 

オプションのmoredescがうまく動いていないのを修正しました。

ダウンロードやインストール方法などはこちらからどうぞ。
Dynamic Page Menu から

 

WordPressのPageメニューで、Windowsのエクスプローラ風の自動拡張、自動折りたたみのメニューを実現するためのプラグインを作成しましたのでフリーソフトとして公開します。
(当ページでも使用しています。)

下記の詳細ページを用意しました。
ダウンロードやインストール方法などはこちらからどうぞ。
Dynamic Page Menu から

 

あるdiv要素を中央寄せにしようとして、ちょっと悩んだので忘れないようメモします。

<style>

div#a {
    width:100%;
    text-align:center;
}

div#b {
    width:100px;
    border:1px solid #333;
}

</style>

<div id="a">
<div id="b">text</div>
</div>


これは、IEだと正しく中央寄せされるのに、Firefoxでは中央寄せされない。
なんでかな~と調べてみたら、FireFoxの場合は子要素の側でも、親要素の余白指定を使うかどうかをmarginで指定してあげないと思ったとおりの表示にならない。
そこで、styleタグの中に以下を追加する。


div#b {
    width:100px;
    border:1px solid #333;
    margin-left:auto;
    margin-right:auto;
}

これで期待通り中央寄せ表示される。

 

最近CakePHPなどのフレームワークについて勉強して遊んでいるのですが、最近はViewの部分でSmartyを利用せずに生のphpファイルを利用するのが主流なんですね。(Smartyをオプション的に利用することは可能なようですが)
仕事で何度かSmartyを利用しているのですが、正直メリットよりもデメリットの方が大きいような気がしていましたのでこの方針は結構なことです。

そもそもテンプレートエンジンというものは、デザインとロジックをきれいに分離するために存在するわけです。

で、PHPの場合は require なり includeなりで、内部の処理に合わせて動的にインクルードするファイルを切り替える機能を言語として持っています。
したがって、実はわざわざロジックとデザインを分離するためにテンプレートエンジンに頼る必要はなくて、「ロジック用のphpファイル」と「デザイン用のphpファイル」を最初から分離してコーディングすればOKなわけです。

だいたい、生のPHP自体がテンプレートエンジンとして十分に簡潔な記述力があります。

生PHP : <?= $name ?>
Smarty : {$name}

上と比べて下の方が確かに書きやすいかもしれませんが、まあ大した違いはないですよ。
デザイナーに優しいというけれど、ループ処理のあの妙ちきりんな記述方法を普通のデザイナーさんが理解してコーディングしてくれるとは思えません。
結局PHPプログラマがSmartyの記述法を覚えて、デザイナーに指示をする、あるいはプログラマが直接HTMLに手を入れるしかないわけです。だったら始めからPHP言語で書いたほうが(新しい言語を覚える手間がない分)ベターでしょう。

Smartyの場合、デザインを分離するというより、表示にあたってhtmlを加工する機能がいろいろあることが便利だと受け取られているような気がします。
しかしこれらは単なるライブラリ的な機能ですからテンプレートエンジンであるところのメリットではありませんね。
それより問題なのはテーブルを何重か入れ子にするような複雑なテンプレートの場合、Smartyを使うとデバッグがえらく大変になることです。PHPのデバッガがSmartyの吐き出す複雑怪奇なキャッシュファイル上の行番号を教えるため、間違いの場所を探すのが非常に骨が折れます。
あと、スペルミスなどでassignに失敗したデータを表示しようとするとエラーにならずに単なる空白表示になるのもミスを見落とし易くなり問題だと思います。

まあ今どきはHTML自体はなるべく簡潔にして、デザインはcssで記述するというスタイルが主流です。PHPに限らず、今後はテンプレートエンジン自体の必要性は自然に低下していくのでしょう。

ともかく、私にとって今のところはSmartyを積極的に利用する必然性を見出せません。まあ表示用変換機能の部分は確かに便利なので、誰かがその部分だけを切り出してライブラリに仕立て上げてくれたらいいのになあと思います。(自分がやればいい話かな)