- ベストアンサー
エラー対応方法
- エラーが発生しました。Call to undefined function blogValidate() in /srv/www/htdocs/blog_create.php on line 5というエラーメッセージが表示されます。
- 原因は、blogValidate()関数が定義されていないためです。
- 対応方法:blog.phpファイルを読み込む必要があります。require_once('blog.php');を追加してください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>下記を書いたら定義したことにはならないのですか? なりますよ。 ただし、クラスオブジェクトblogのメソッドになってますか? って話です。 だから、わかってないなら、クラス使うのはやめたほうがいいんじゃ? 面倒の種にしかなってないですよ。 全部グローバルスコープ参照の方がいいと思いますよ。 (つまりクラスを使わずfunction ~だけでソースを書くという事) this空間を理解できてないと、無意味にハマるだけでしょうし。 そもそも質問ですが、 今あなたにオブジェクト指向プログラミングは 本当に必要なんですか? Youtube見ただの言ってますが、それは 基礎をわかってる方がちょいちょい書いたもので、 わかってない人向けじゃないと思いますよ。 そりゃ、貴方が疲れるのも当然だわ~と 多分他の人も思ってる。 んま、お好きに! ただし、回答は変わらず、 「メソッドがないので読めないのが原因なので直せ!」 のままです。 他の回答者も同じ回答ですが。 誰が見ても同じ回答なので、それ以上言ってもしょうがないですね。 もう1回言います、わかってないなら 最小限の構成にしなさい! 無理に、背伸びして作ったフリだけする 自己満足なら、自己解決を! 当たり前の事、書いただけですが。。
その他の回答 (5)
- t_ohta
- ベストアンサー率38% (5238/13705)
> 下記を書いたら定義したことにはならないのですか? それを何処に記述しましたか? Classの構造を理解されていますか? Classの構造はオブジェクト指向の根幹をなす部分ですので、しっかり理解して作らないと後で矛盾が生じて一から作り直す羽目になりますよ。 PHPの公式マニュアルにはClassの解説もしっかりあるので一読しましょう。 https://www.php.net/manual/ja/language.oop5.php あと、入門書を一冊読んでみるといいんじゃないでしょうか。 ↓ こんなやつ https://books.rakuten.co.jp/rb/16705477/ 基礎をしっかり理解してからプログラミングを始めた方が進歩が早くてイイですよ。 基礎が理解できれば他の人が書いたプログラムを解読できるようになり理解が早くなりますし、自分に必要なモノがどれなのか判るようになるでしょう。 それに、このまま本質的な部分を理科しないままプログラムを作っているとバグやセキュリティーホールだらけのプログラムを作る結果になります。 自分のパソコンの中だけで動かすのであればまだマシですが、インターネット上にセキュリティーホールのあるプログラムを公開すると攻撃対象にされ多くの人に迷惑を掛ける事になりますよ。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
これは、別件ですが。単なる興味で聞いてみたいんですが。 あなたって、人月工費か、時間単価いくらなんですか?? たとえば、今あなたがやってるこれを、 何時間でできる予定で、実際は何時間かかったのでしょうか?
お礼
いくら時間がかかっても完成させたいです。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
まず最低限守ってほしい事。 require_once('blog.php'); これを書いたなら、 $blog = new blog; $blog->blogValidate($blogs); この行がエラーになります。 そのメンバーの質問はしない事。 道を歩いてる人に開かない箱の中身聞くのと同じですので、 回答は「ありません」と前回も話した通り 必ず、blogValidateを開示してからにしてください。 次に何度も言ってる事ですが、エラーログを読んでください。 ( ! ) Fatal error: Uncaught Error: Call to undefined function blogValidate() in /srv/www/htdocs/blog_create.php on line 5 ( ! ) Error: Call to undefined function blogValidate() in /srv/www/htdocs/blog_create.php on line 5 はっきりと、 blogValidate() なんてものは存在しませんと書いてます。 しかし、タイトルは「validateがおかしいみたいです。」 となっております。 おかしいのではなく、そもそも存在しないのですから、 「validateがおかしいみたいです。」というのは、正しくない質問です。 ターボ車じゃない車を持ってきて「ターボがおかしいんですよね~?」 なんて答えればいいんですか?回答者は。。ってこと ですので回答は「ありません」となります。 常に最小限のソースにして質問をすることと、 エラーではっきり存在してないって書いてる程度の物は そもそも質問したところで回答はない。→「ないんだったら作れ!」 これ以外の回答は元々ないんですよ。 が回答です。 なお、PHPStormなら、Ctrl+Alt+Bで参照先へのジャンプです。 存在していないので、そもそも飛べないでしょうが。 文字の自動整形はCtrl+Alt+Lです。 (メニューに書いてるので、わからなければメニュー見ればわかりますが) あとXDEBUGは外のPHPを使う為です、ビルトインPHPを 使う時には不要で、Shift+F9(最初の1回目は、右クリックでデバッグを選ぶ必要あり) これで、エディター上で1行単位で実行できるので、この程度のミスは 最初から起こりません。 頼むから基礎を覚えてほしいところ。 また、自分でやってみたいと言っておきながら、単に他人のソースを 持ってきただけで、まだ自分では作ってないでしょうに! だったら、むしろ、基礎を是非やるべきです。 レストランで調理したことがない人に、 基礎ができてないとできない、高級レシピだけ教えて、何の意味がある?って状態。 ひとまず、何回でも言いますが、基礎を覚えてから、次に進んでください。
お礼
ご回答誠にありがとうございます。 下記を書いたら定義したことにはならないのですか? 記 //ブログのバリデーション function blogValidate($blogs) { if (empty($blogs['title'])) { exit('タイトルを入力してください。'); } if (mb_strlen($blogs['title']) > 191) { exit('タイトルは191文字以下にしてください。'); } if (empty($blogs['content'])) { exit('本文を入力してください。'); } if (empty($blogs['category'])) { exit('カテゴリーは必須です。'); } if (empty($blogs['publish_status'])) { exit('公開ステータスは必須です。'); } } 場所が悪いのでしょうか? それとも根本的に間違っていますか???
- watanabe04
- ベストアンサー率18% (295/1598)
>Call to undefined function blogValidate() blogValidate()が存在しないと言っています。 blogValidate()を使う前に定義していますか? エラーはblog_create.phpの5行目です。
お礼
ご回答誠にありがとうございます。 下記を書いたら定義したことにはならないのですか? 記 //ブログのバリデーション function blogValidate($blogs) { if (empty($blogs['title'])) { exit('タイトルを入力してください。'); } if (mb_strlen($blogs['title']) > 191) { exit('タイトルは191文字以下にしてください。'); } if (empty($blogs['content'])) { exit('本文を入力してください。'); } if (empty($blogs['category'])) { exit('カテゴリーは必須です。'); } if (empty($blogs['publish_status'])) { exit('公開ステータスは必須です。'); } } 場所が悪いのでしょうか? それとも根本的に間違っていますか???
- t_ohta
- ベストアンサー率38% (5238/13705)
Call to undefined function blogValidate() とPHPが言ってます。 これは「blogValidate() なんて関数は定義されてないから知らない」と言う意味です。 blog クラスの中に blogValidate() 関数が無いのでしょう。
お礼
ご回答誠にありがとうございます。 下記を書いたら定義したことにはならないのですか? 記 //ブログのバリデーション function blogValidate($blogs) { if (empty($blogs['title'])) { exit('タイトルを入力してください。'); } if (mb_strlen($blogs['title']) > 191) { exit('タイトルは191文字以下にしてください。'); } if (empty($blogs['content'])) { exit('本文を入力してください。'); } if (empty($blogs['category'])) { exit('カテゴリーは必須です。'); } if (empty($blogs['publish_status'])) { exit('公開ステータスは必須です。'); } } 場所が悪いのでしょうか? それとも根本的に間違っていますか???
お礼
貴重なアドバイス、どうもありがとうございました。