関数名の頭に@(アットマーク)の謎

/ php

実践でPHPを習得しよう企画、3日目。企画はいま思いついたけど、3日前からやっているから、3日目。

PEARでインストールしたライブラリを眺めていると、見たことのない記法を発見。

if (file_exists($filename)) {
     @unlink($filename);
}

関数名の頭にある@(アットマーク)は、PHP特有のエラー制御演算子というものらしい。これを書くと、その処理内でエラーがあっても出力されなくなる。なるほど、ライブラリに余計なエラーログを吐かれるのは迷惑ってことか。

詳細はPHPマニュアルを参照。

関数名とかじゃなく、式全般で使えるのね。でも、通常の開発では使うことは無さそう。ライブラリでエラーが出たときに、この@演算子を外すばエラー詳細を確認できるというノウハウってところでしょうか。

演算子でつまづくとは、習得の道のりは険しい。

DreamWearverで新規作成時のソースをいじる

DreamWeaverでファイルを新規作成すると、何かしらコードが書かれている。でも大体がゴミみたいなもんで、使えない。ということで変更する方法。

C:\Program Files\Macromedia\Dreamweaver 8\Configuration\DocumentTypes

上記のように、DreamWeaverをインストールしたディレクトリ以下の Configuration → DocumentTypes フォルダ内に、デフォルト表示用ファイルが置いてある。これを編集すればOK。

ファイル作成時に書くことは、大体決まっていて、それをデフォルトで表示するようにしておけば、業務効率がアップすること間違いなし。少なくともコピペするよりは楽。

サイトごとにデフォルトを変えらると、さらに便利なんだけどねえ。

クラスをnewするときのアレ

/ php

PHPでクラスをnewするときのアレの話。

$foo = new FooClass();
$bar =& new BarClass();

ずっと下のやり方で書いてきたのだけど、よく考えてみると理由があいまい。参照を明示するメリットってなんだろう。「みんな、そう書いているし、これがPHPの文化なのかな」とか、郷に入っては郷ひろみ的発想で流していた。

こちらに詳しいこと書いてありました。

まあ、結論としては
1. 参照を返す関数から参照を受け取り、セットする場合は「=&」を用いること。
2. クラスをnewするときも「=&」すること。
がPHP4での注意点となります。

PHP5だと、そもそもオブジェクトは参照渡しが基本なんで、そりゃメリットも感じないか。まあ、でもスゴイ勉強になった。PHP4をやるときに、参照渡しを肝に命ずる次第っす。ありがとうございます。

DreamWearverソースのクリーンアップ

DreamWeaverで構築したサイトのソースが汚いので、5分くらいでクリーンアップするshを書いてみた。あとで汎用性あるように、改造するために、ここにメモ。

#!/bin/sh

echo 'remove Templates directory' rm -Rf Templates/
for FILE in `find . -name '*.html' -print` do echo ${FILE} while true do COUNT=`grep '<!-- Instance' ${FILE} | wc -l` if [ ${COUNT} -eq 0 ]; then break; fi perl -pe 's/<!-- Instance.*? -->//' ${FILE} > ${FILE}.$$ mv ${FILE}.$$ ${FILE} done done
exit

DreamWeaver自体にもソースのクリーンアップとか機能があるらしいんだけど、テンプレートから切り離したりしなくちゃいけないんで、面倒らしい。そこらへんDreamWeaver使いじゃないので、よく分からない。正攻法を調べる時間もなかったので、全部サーバに上げてもらって、shスクリプトで処理した次第。

DreamWeaverぐらいのソフトになれば、これ以上のことを、コマンド一発でやれそうな気がするのだけど。知っている人いたら、教えてくださいまし。


最新エントリー
関数名の頭に@(アットマーク)の謎
DreamWearverで新規作成時のソースをいじる
クラスをnewするときのアレ
DreamWearverソースのクリーンアップ
あわせて読みたいブログパーツ