• ベストアンサー

【PHP】define() て便利なようで不便…

PHP5ユーザーです。 定数定義のdefine() というのを最近知りました。 一見便利な気がしたのですが、変数とは勝手が違うため不便に感じることがあります。 例えば、 $useEnc = 'EUC-JP'; header('Content-Type: text/html; charset={$useEnc}'); 上記をdefine()で書き直そうとすると代入できません。 また、ヒアドキュメンント内で定数を代入しようとしてもできません。 プロの方はこういうのをどのように扱っているのでしょう。 お詳しい方、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

文字列連結の方法ってしってます? $string = 'aiueo'.'kakikukeko'; これで、 echo $string; で aiueokakikukeko が代入されていることが分かります。 これと同じ要領 define('CONSTANT', 'EUC-JP'); header('Content-Type: text/html; charset='.CONSTANT); これだけ。 {$useEnc} でつっこむよりも、 . で連結したほうが、微妙に処理が速いです。

takosuke88
質問者

補足

ありがとうございます。 . は最近使ってなかったのでつい忘れていました… ヒアドキュメントは… 無理ですかね。

その他の回答 (2)

  • ggaogg
  • ベストアンサー率43% (38/88)
回答No.3

メソッドの引数が省略された時にデフォルト値として代入する時に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;  } } ごめんなさいテストしないで投稿してます。

takosuke88
質問者

補足

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

回答No.2

#1さんの回答で出来ますね。 違う話を補足すると、ダブルクォーテーション、{}、ヒアドキュメント構文を 使わないように意識すればいいと思いますよ。 処理を遅らせたり、見づらくなったりしますから。 http://phpdream.seesaa.net/article/19580595.html 便利だけど、テスト的なプログラム以外には使わない、って感じですねー。

takosuke88
質問者

補足

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

関連するQ&A