• ベストアンサー

functionで別functionを動作させたい

DBからデータをダウンロードするプログラムを書いており、DB接続・クエリー実行・エラー時の各functionをfunction.phpに記述しています。 このfunction.phpの中で、とあるfunctionから別のfunction fuga()を実行する方法を教えていただけませんか? 下記に簡略化したプログラム文を記述します。 function errmail($subject,$text,$mail) {    mb_send_mail($mail,$subject,$text,"hoge@hoge.co.jp"); } function hoge(){    $con = pg_connect(ここはDB接続設定);    if(!$con){    errmail("DB接続失敗", "DB接続に失敗","admin@fuga.co.jp");    exit; } } 以上ですが、function hogeからerrmailが実行できません。 実際のプログラムで、それぞれのfunctionが単体で正常動作することを確認しておりますが、functionをまたがる(というのでしょうか;)実行方法についてお願いいたします。

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

  • ベストアンサー
  • wp_
  • ベストアンサー率54% (132/242)
回答No.3

oops ^^; それでしたら単純に、引数が不正でmb_send_mail()がエラーを吐いているのではないですかね。 errmail()単体がokならばそれ以外なさそうな気がします。 関数が別関数を呼ぶと言うのはごくごく普通ですから。 error_reporting(E_ALL);をコードの最初に書いてエラーを出してみましょう。 そうすれば解決策は見つかるかと。

noname#102084
質問者

お礼

何度も回答ありがとうございます。 質問については本当にすみませんでした; アドバイスいただいたとおり引数だけに的を絞っていろいろ確認していたところ、引数が全くわたせていないようでした; function errmail($subject,$text,$mail) {    print ($mail); print ($subject); print ($text);    mb_send_mail($mail,$subject,$text,"hoge@hoge.co.jp"); } と、引数をあぶりだしてみようとすると、何も表示されませんでした; やっぱりfunctionを3つまたいでいるせいですかね;;

その他の回答 (2)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

   errmail("DB接続失敗", "DB接続に失敗","admin@fuga.co.jp");    exit; } }   <- この辺から察するにclassっぽいですね。 インスタンスを生成する場合は$this->errmail() インスタンスからcallする場合は$instance->errmail() 静的に呼ぶ場合はMyClass::errmail() 継承した親の関数だったらparent::errmail()(この辺がvarによって違う) となりますな。 違ったらごめんなさいと言うことで。

noname#102084
質問者

お礼

回答ありがとうございます。 no1の方のところに書いたとおりで、classもまだ理解できておらず、 最後の「 } 」はコピーミスです;; また、質問中のプログラム文にも致命的ミスをしており本当に申し訳ございません。 もしお時間がありましたら、no1様の補足場所を借りて書かせていただいていることも踏まえてアドバイスいただけたらと思います。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

classは組んでいませんか? PHPのバージョンも含めて補足が必要です

noname#102084
質問者

お礼

回答ありがとうございます。 質問文のミスという私の不手際で大変申し訳ございません。 もしまたお時間がありましたら、アドバイスいただければと思います。 本当に申し訳ございません。

noname#102084
質問者

補足

ご回答ありがとうございます。 classは組んでいません。(というより勉強不足でまだ理解できてません;) PHPはVersion4.3.2です。 この場をお借りして質問中のプログラム文を訂正させてください; 質問文では errmail("DB接続失敗", "DB接続に失敗","admin@fuga.co.jp"); としていますが、詳細には、function.phpの1行目でrequire_once()で呼び出す設定ファイル内で変数にもたせており、 errmail($mailtitle, $meilmessage,$mailadd); のように変数で指定すると実行できなくなるようです; 大変致命的な質問ミスをしてしまい、申し訳ありません。