電子書籍の厳選無料作品が豊富!

PHP5ユーザーです。
定数定義のdefine() というのを最近知りました。
一見便利な気がしたのですが、変数とは勝手が違うため不便に感じることがあります。
例えば、

$useEnc = 'EUC-JP';
header('Content-Type: text/html; charset={$useEnc}');

上記をdefine()で書き直そうとすると代入できません。
また、ヒアドキュメンント内で定数を代入しようとしてもできません。

プロの方はこういうのをどのように扱っているのでしょう。
お詳しい方、よろしくお願いいたします。

A 回答 (3件)

文字列連結の方法ってしってます?




$string = 'aiueo'.'kakikukeko';

これで、
echo $string;

aiueokakikukeko が代入されていることが分かります。
これと同じ要領

define('CONSTANT', 'EUC-JP');
header('Content-Type: text/html; charset='.CONSTANT);
これだけ。

{$useEnc}
でつっこむよりも、
. で連結したほうが、微妙に処理が速いです。

この回答への補足

ありがとうございます。
. は最近使ってなかったのでつい忘れていました…

ヒアドキュメントは… 無理ですかね。

補足日時:2008/06/17 01:20
    • good
    • 0

メソッドの引数が省略された時にデフォルト値として代入する時にdefineで定義した値かconstで定義した値しか代入できないと思います。



define ('defaultValue', '初期値');
class Sample {
 function myMethod($a = defaultValue) {
  echo $a;
 }
 const defaultValue2 = '初期値2';
 function myMethod2($b = self::defaultValue2) {
  echo $b;
 }
}

次のはエラーになるんじゃないですっけ
class Sample {
 var $defaultValue = '初期値';
 function myMethod($a = $this->defaultValue) {
  echo $a;
 }
}

ごめんなさいテストしないで投稿してます。

この回答への補足

研究してみます。
ありがとうございました。

補足日時:2008/07/03 00:08
    • good
    • 0

#1さんの回答で出来ますね。



違う話を補足すると、ダブルクォーテーション、{}、ヒアドキュメント構文を
使わないように意識すればいいと思いますよ。
処理を遅らせたり、見づらくなったりしますから。

http://phpdream.seesaa.net/article/19580595.html

便利だけど、テスト的なプログラム以外には使わない、って感じですねー。

この回答への補足

処理速度のことなど考えてもいませんでした…
「.」は小さくて見づらいので避けていたのですが。
可能不可能がはっきりしたのでうまく使っていけそうです。
ありがとうございました。

補足日時:2008/07/03 00:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!