• ベストアンサー

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

ggaoggの回答

  • 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
質問者

補足

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

関連するQ&A

  • header関数について

    私の認識としてはheader関数とはhtml内にある<head>内の代替わりだと思っていたのですが、それではheader関数の意義がないと思い、質問させていただきました。 php内でhtmlを書く場合、header関数を使わずに、<head>内で <meta http-equiv=\"Content-Type\" content=\"text/html\; charset=euc-jp\">\n"; のように書けばいいと思うのですが、なぜ header("Content-Type: text/html; charset=EUC-JP"); のように書く必要があるのでしょう?何かメリットでもあるのでしょうか? それとも私のheader関数に対する認識がずれていますか? php初心者というより、プログラム事態をあまり書いたことがないため、理解が乏しいです。header関数とhtml内での<head>間に書く違いを教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • 【PHP】文字をPOSTで飛ばすと「'」「"」「\」に「\」がつく

    <form>で文字列を送信して「$_POST」で受信する場合、 「'」「"」「\」の前にのみ自動で「\」がついてしまいます。 (「'」「"」「\」→「\'」「\"」「\\」) これはなぜでしょうか? できれば\を付けないようにしたいのですが… お詳しい方、よろしくお願いいたします。 <環境> EUC-JP PHP4.4.4 <プログラム> <?php header('Content-Type: text/html; charset=EUC-JP'); header('Content-Language: ja'); mb_internal_encoding("EUC-JP"); $step = $_GET["step"]; $tx = $_POST["tx"]; if($step==''){ // ---- 初期画面 print "<form action='hoge.php?step=end' method='POST'>"; print " <input type='text' name='tx'>"; print " <input type='submit' value='ENTER'>"; print "</form>\n"; } if($step=='end'){ // ---- 受信画面 print "{$tx}"; } ?>

    • ベストアンサー
    • PHP
  • インクルードすると おかしい

    インクルードすると"1"が表示されてしまい、困ってます。 コードがまずいのか?対処方法があるのか? すみませんが、教えてください。 状況は以下のとおりです。 test.php <?php echo include('./header.html'); ?> header.html <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> test.phpを実行すると、なぜか"1"が表示されてしまいます。 以上、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • HEADERについて

    無知でお恥ずかしいのですが、PHPで出力する際 header("Content-Type: text/html;charset=EUC-JP"); などと最初にヘッダーを出力すると思うのですが、例えばtest.phpが以下のようになっていた場合でもPHPでヘッダーを出力する必要があるのでしょうか? test.php ※1<?php header("Content-Type: text/html;charset=EUC-JP"); ?> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="TEXT/HTML; CHARSET=EUC-JP"> <TITLE></TITLE></HEAD> <BODY> TEST <?php echo $test; ?> </BODY> </HTML> 参考書などを見てみると「全ての出力の前に記述する必要がある」と書いてあるだけで、書かずとも正常に表示されますし、仮に文字化けしても <META HTTP-EQUIV="Content-Type" CONTENT="TEXT/HTML; CHARSET=EUC-JP"> と追加すれば文字化けも解決するので、疑問は感じつつも思い出したときにPHPにもヘッダを記述するようにしていたのですが、少しづつPHPを勉強しやれる事が増えてくる内に、記述してあるものと記述して無いものが混在してきて気持ち悪く感じてきました。 皆さんはどのようにされていますか? ※他サイトで配布されているPHPスクリプトなども見てみたのですが、毎回記述している方、一切記述していない方それぞれでした。 あと、全く違う質問ですが、MYSQL接続中にエラー処理でexit;する場合、exit;する前にMYSQL接続を切断する必要ってあるのでしょうか?

    • ベストアンサー
    • PHP
  • PHPのheadr関数につきまして

    例えば下記のような場合、どのような意味あいになりますでしょうか。 phpのheader()関数は引数にurlを書いてジャンプさせるものという理解をしております。 header('Content-Type: text/xml; charset=UTF-8'); phpのマニュアルにも目をとおしましたが解りませんでした。 ご教授いただけますと幸いです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPで.htaccessを設定するとエラーになってしまいます。

    PHPの初心者です。 Xというディレクトリにフォーム記入をするphpファイル(仮にa.php)があります。 このa.phpからpostでb.phpに値を送信して表示させています。 このときにどうしても文字化けが起こってしまうのでこのXディレクトリに.htaccessを設定して置いたところ、 Method Not Allowed The requested method POST is not allowed for the URL ~~ というエラーメッセージが出てきてしまいます。 様々なサイトで掲載されている対処法を確認し、 metaタグや、define('Charset', 'EUC-JP'); while (@ob_end_clean()); mb_http_output(Charset); mb_internal_encoding(Charset); ini_set("default_charset", Charset); ob_start('mb_output_handler'); header ("Content-Type: text/html;charset=EUC-JP"); などをPHPファイルに記入していろいろ試してもうまくいかず 結局.htaccessに行き着いたのですがエラーメッセージ…という具合です。 サーバーはレンタルでシーサイドネットの共有です。phpは使用可能です。php.iniはおそらくいじることはできません。 なぜ.htaccessでエラーになるのかわかりません。 お教え頂ければ幸いです。よろしくお願いします。

    • ベストアンサー
    • PHP
  • HTML・PHPの文字化け

    こんにちは。 PHPとMySQLを使ってショッピングカートを作ろうと思ったのですが、しょっぱなから躓いてしまいました・・・。 index.htmlでメタを <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> とeuc-jpにしたのですが、サーバーにアップすると文字化けしてしまいます。 表示のエンコードで確認するとシフトーJisになっています。eucにするとちゃんと表示されるのですが、更新するとやはり文字化けします。PHP・MySQLがeucですので、困っています。 どうにか対処方法はないでしょうか?ご教授をよろしくお願いします。

    • ベストアンサー
    • HTML
  • [HTML-PHP]あるPHPファイルだけ文字化け

    お世話になります。 XP/PHP5.2.9/Apache2.2.11 の環境で、簡単なシステムを作っているのですが、その際に PHP側で header( "Content-Type: text/html;charset=shift_jis"); HTML側で <meta http-equiv="content-type" content="text/html; charset=shift_jis"> と明示的にSJISにしているのですが、実際にローカルで確認すると文字化けしてしまうPHPファイルがあります。(1ファイルのみ) 他のPHPファイルは同様のヘッダー情報を送信していますが、文字化けせずに画面出力されています。 HTML-PHP初心者のため、補足等必要になるとは思いますが、どうぞご教授下さい。

    • ベストアンサー
    • PHP
  • basic認証について

    下記、basic認証プログラムを組んでいます。 プログラム内に記載しておりますとおり、 USERにadmin PASSにabc123 と入力しても、ログインができません。 原因としてどのようなことが考えられますでしょうか? よろしくお願いします。 <?php // File Name: auth02.php // 変数 $PHP_AUTH_USER にすでに情報が含まれていることを確認する。 if (!isset($PHP_AUTH_USER)) { // 中身が空なら、ダイアログボックスを表示させるヘッダーを送る。 header('WWW-Authenticate: Basic realm="My Private Stuff"'); header('HTTP/1.0 401 Unauthorized'); header('Content-Type:text/html; charset=EUC-JP'); echo 'ユーザーの認証が必要です。'; exit; } else if (isset($PHP_AUTH_USER)) { if (($PHP_AUTH_USER != "admin") || ($PHP_AUTH_PW != "abc123")) { header('WWW-Authenticate: Basic realm="My Private Stuff"'); header('HTTP/1.0 401 Unauthorized'); header('Content-Type:text/html; charset=EUC-JP'); echo 'ユーザーの認証が必要です。'; exit; } else { echo " <P>認証に成功しました!</p> "; } } ?>

    • 締切済み
    • PHP
  • 更新を繰り返すと文字化けが起きてしまいます...

    お世話になります PHP4でHPを作成しています 文字化けに関して質問させて下さい PHPで作成したページの更新をすると 5回に1回の割合で文字化けが発生してしまいます EUC-JPで作成したPHPファイルを表示するので ファイルの先頭に  <? header(\"Content-Type: text/html;charset=EUC-JP\"); ?>  <html lang=\"ja\">  <head>  <meta http-equiv=\"content-type\" content=\"text/html; charset=EUC-JP\">  <meta http-equiv=\"content-style-type\" content=\"text/css\">  <meta http-equiv=\"content-script-type\" content=\"text/javascript\"> と指定してから 他の処理が実行されるようにしているのですが…。 何回か更新を繰り返すと文字化けを起こしてしまいます。 文字化けを起こした時にソースを表示すると 日本語が正しく見れる状態になっていたので シフトJISになってしまっているようで… 宜しくお願いします

    • 締切済み
    • PHP