PHPでWarningが発生しています

このQ&Aのポイント
  • PHP初心者です。テンプレートを使ってファイルを作成する機能をつくりましたが、実行するとWarningが発生します。解消する方法をご存知でしたらご教授ください。
  • クラスファイルとメインのコードがあり、クラスファイルではテンプレートファイル名、保存ファイル名、置換キーワードセットを指定できます。メインのコードではインスタンスを生成し、テンプレート名と保存ファイル名を設定し、値を置換してファイルを生成します。
  • 警告メッセージとして、ファイル名が空であるためにfopen()がWarningを表示し、fwrite()やfclose()も同様にWarningを表示しています。原因はオブジェクト指向で組んだことにあるかもしれませんが、解決策は不明です。
回答を見る
  • ベストアンサー

PHPでFilename cannot be empty他の警告(Wa

PHPでFilename cannot be empty他の警告(Warning)発生しています。 PHP初心者です。 テンプレートを使ってファイルを作成する機能をつくりました。 一応動いているようなのですが、実行するとWarningが発生します。 解消する方法をご存知でしたらご教授ください。 オブジェクト指向で組んでみたので、それが原因かもと思うのですが、解消 策がわからず困っています。 よろしくお願いします。 ◆警告メッセージ Warning: fopen(): Filename cannot be empty in C:\path\CreateFile.php on line 31 Warning: fwrite() expects parameter 1 to be resource, boolean given in C:\path\CreateFile.php on line 32 Warning: fclose() expects parameter 1 to be resource, boolean given in C:\path\CreateFile.php on line 33 以下サンプルコードです。 ◆クラスファイル <?php class CreateFile { // テンプレートファイル名 public $templateFile; // 保存ファイル名 public $createdFile; // 置換キーワードセット arrayで指定 public $values; // ファイル生成 public function createFile() { // ファイルを生成する $data = ""; if($this->templateFile){ $data = file_get_contents($this->templateFile); } if (is_array($this->values)) { foreach ($this->values as $key => $val) { $data = str_replace($key, $val, $data); } } // ファイルを生成する $fp = fopen($this->createdFile, 'w'); fwrite($fp, $data); fclose($fp); } } ?> ◆メイン <?php require_once './class/CreateFile.php'; // インスタンス生成 $cdFile = new CreateFile(); // テンプレート名設定 $cdFile->templateFile = './template.tpl'; // 保存ファイル名設定 $cdFile->createdFile = './hoge.txt'; $cdFile->values = array('<%VALUE>' => 'テストです'); $cdFile->createFile(); echo '++++++++++ End CreateFile ++++++++++'; ?>

  • PHP
  • 回答数2
  • ありがとう数8

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

  • ベストアンサー
回答No.1

PHP4では、Javaと同じように、クラス名と同一のメソッド名を、コンストラクタとなってまして、 PHP5でも、下位互換のためにそうなります。 ので、メソッド名を変更してみてください。(executeとか、createとか)

kahotaka
質問者

お礼

ご指摘ありがとうございます♪ コンストラクタのことを失念していました(^_^;) ぼけた頭でやるとだめですね。 早朝から回答ありがとうございました<m(__)m>

その他の回答 (1)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

PHPでは関数名で大文字小文字を区別しないので createFileとCreateFileは同じとみなされます

kahotaka
質問者

お礼

ご指摘ありがとうございます♪ コンストラクタのことを失念していました(^_^;) ぼけた頭でやるとだめですね。

関連するQ&A

  • file(): Filename cannot

    PHPで file(): Filename cannot be empty in abc.php on line 421 というエラーが出てしまいます。他のプログラムと同じ書き方をしているはずなのですが どうしても1つだけエラーになります。 これはどういう意味なのでしょうか?教えてくださいお願いします。

    • 締切済み
    • PHP
  • function()を初めて使いました。エラー。

    かなり初歩的な質問をさせていただきます。 初めてfunction関数を使ったのですが、下記のようなエラーが出ました。 Warning: array_reverse() [function.array-reverse]: The argument should be an array in E:\Web\Chat2\chat\logpage.php on line 99 Warning: array_reverse() [function.array-reverse]: The argument should be an array in E:\Web\Chat2\chat\logpage.php on line 100 Warning: array_reverse() [function.array-reverse]: The argument should be an array in E:\Web\Chat2\chat\function.php on line 38 Warning: flock() expects parameter 1 to be resource, boolean given in E:\Web\Chat2\chat\function.php on line 41 Warning: fputs(): supplied argument is not a valid stream resource in E:\Web\Chat2\chat\function.php on line 48 Warning: flock() expects parameter 1 to be resource, boolean given in E:\Web\Chat2\chat\function.php on line 49 Warning: fclose(): supplied argument is not a valid stream resource in E:\Web\Chat2\chat\function.php on line 50 チャットを作っていて、何度も使う文をfunctionでまとめて、別ファイルに保存し、 requireで呼び出して、str();で使うとこうなりました。 function load(){ $log_data = "./data/log".$_GET['id'].".cgi"; $log_file = file($log_data); $member_data = "./data/member".$_GET['id'].".cgi"; $member_file = file($member_data); } このような形で使っているのですが、何かfunctionを使うにあたって注意などがあれば教えていただけませんか?

    • 締切済み
    • PHP
  • 超初心者なんですが教えてください!

    Warning: htmlspecialchars() expects parameter 1 to be string, array given in C:\xampp\libs\plugins\modifier.escape.php on line 26 はどうゆうエラーですか?? あと、解決方法も教えてください。

    • 締切済み
    • PHP
  • エラーが出ないようにしたいのですが?

    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php echo'テストプログラム開始',PHP_EOL; $ret1 = array_reverse(); $ret2 = array_reverse(1); echo'テストプログラム終了',PHP_EOL; ?> </body> </html>  以上のプログラムを実行すると、  以下のエラーが出るように組まれたプログラムです。   エラーが出ないプログラムにするには、どんなプログラムを組めばできますか!?   早々ですが^^    今年もよろしくお願いいたします。 テストプログラム開始 Warning: array_reverse() expects at least 1 parameter, 0 given in C:\xampp\htdocs\study.localhost\E_WARNING.php on line 9 Warning: array_reverse() expects parameter 1 to be array, integer given in C:\xampp\htdocs\study.localhost\E_WARNING.php on line 10 テストプログラム終了

    • ベストアンサー
    • PHP
  • ワードプレスのPHPエラーについて

    サイト表示で Warning: strpos() expects parameter 1 to be string, array given in /home/~~/public_html/wp-includes/functions.php on line 3391 と表記されています! これのトラブルを解決したいのですが、 方法がわかりません。 どなたか親切な方がいれば 教えていただきたいです!

    • 締切済み
    • PHP
  • files関数配列取得について

    Notice: Undefined index: in /var/www/html/intern/sr/add.php on line 72 Warning: array_keys(): The first argument should be an array in /var/www/html/intern/sr/add.php on line 72 Notice: Undefined index: in /var/www/html/intern/sr/add.php on line 73 Warning: array_values(): The argument should be an array in /var/www/html/intern/sr/add.php on line 73 上記のようなエラーが発生します。 ソースは以下の通りです。 やりたいことはpostから送られてきたfileを連想配列? として取得することです $file_key = array_keys($_FILES["$jisseki_img"]); $file_val = array_values($_FILES["$jisseki_img"]); for ($i = 0; $i < count($file_key); $i++) { $$file_key[$i] = mb_convert_encoding($file_val[$i], "EUC-JP", $enc_input); }

    • ベストアンサー
    • PHP
  • 助けてください

    サーバーにフリーのPHPをアップしたところ、以下のようなメッセージが出てきて正常に動作しません。 発行元に問い合わせていますが、どうも返事が遅くなりそうなので、もしよろしければ解決の糸口を教えていただければと思い、投稿しました。 ------------------------------------------------ Warning: flock() expects parameter 1 to be resource, boolean given in /virtual/hpbuilder/public_html/mydic.php on line 131 Warning: fputs(): supplied argument is not a valid stream resource in /virtual/hpbuilder/public_html/mydic.php on line 133 Warning: flock() expects parameter 1 to be resource, boolean given in /virtual/hpbuilder/public_html/mydic.php on line 135 Warning: fclose(): supplied argument is not a valid stream resource in /virtual/hpbuilder/public_html/mydic.php on line 137 ------------------------------------------------ パーミッションの問題なのでしょうか。よろしくお願いします

    • ベストアンサー
    • PHP
  • PhpMyAdminにおけるデータベース表示の不備

    個人でネットワークプログラミングを行うため、以下の環境を入れています。 ・PHP Version 5.2.4 ・MySql 5.0.45 ・phpMyAdmin - 2.11.5 ログインなどは出来たのですが、データベースを表示する画面になると以下のエラーメッセージが表示され、データベース一覧が表示できません。 ---------------------------------------------- エラーメッセージ: Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 172 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 172 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 172 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 172 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 172 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 172 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 172 合計: 1 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 260 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 260 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 260 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 260 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 260 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 260 Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in [phpmyadminまでのパス]\phpMyAdmin\server_databases.php on line 260 ---------------------------------------------- ソースを眺めていたところ、server_databases.phpにおけるarray_key_exists()で$stat_name, $first_databaseを引数に命令を行っているようですが、$first_databaseに値が設定されていない(=null)ためエラーが起こっているようでした(null避けによりエラーメッセージは出現しなくなった)。 しかし、$first_databaseにはデータベース一覧の情報が入るべきらしく、この値がnullということはありえません。つまり、データベース一覧を取ってこれていないのだろうと仮定したのですが、それ以降の対策が見つかりません。 かれこれ3時間程度迷いました。解決方法を知っている方は教えてください。どうかお願いします…。

  • phpのエラーについて

    Warning: urlencode() expects parameter 1 to be string, array given in  とエラーが返ります。 このエラーは何を意味しているのか教えてください。

    • ベストアンサー
    • PHP
  • データファイルを作成する際に文字化けする

    お世話になります。 PHPで携帯サイト用の登録フォームを作成しています。 下記の様な登録処理をする記述を書きました。 ----------------------------------------- //ユーザーのデータを一行に生成 $line = $_POST["filename"]."<>".$_POST["namae"]."<>".$_POST["age"]."<>\n"; //データファイルに書き込み $fp = fopen("data.txt", "a"); fwrite($fp, $line); fclose($fp); //メッセージを表示 print('<div class="message">' . $_POST["namae"] .'さんを登録しました。' . '</div>' . "\n"); ----------------------------------------- データファイルを開いてみると『十和』という文字が『十\和』と登録されてしまいます。 携帯サイトを作成しているので文字コードは、全てshift-jisで記述しているのですが、文字化け対策の方法が良く判りません。 宜しくお願いします。

    • 締切済み
    • PHP