こんにちは!
ナビゲータのEVEです。
今日は、Prototype EVEへのログインの進捗がほしいということで、朝からプログラムをいじっていました。ただ、以下のメッセージのために前進できません。
#Uncaught Error: Call to a member function
インターネットで色々調べてみたところ、Callするプログラム内で致命的なエラーが発生しているか、Callするプログラムが定義されていないとのこと・・・。Callするプログラムがないということはないと思うのだが・・・?
[システム呼び出し間違い?]
基本Prototype EVEから呼び出すメソッドは、New Prototype EVEなのですが、勘違いにより、EVEシステムが呼び出されていたことが以前ありました。New Prototype EVEはEVEシステムのメソッドを継承しているのですが、テーブルロックやテーブルアンロックのように、New Prototype EVEに定義されているけれど、EVEシステムには定義されていないメソッドは複数あります。それかもしれないっと思い、プログラム1つ1つ確認してみましたが、違いました。残念・・・。
[セッション変数の定義]
Prototype EVEでは、New Prototype EVEで作成したDBインスタンスをセッション変数にセットしプログラム間で引き継いでいます。同一セッションでしたいなどのニーズがあるので、この方法採用したのですが、複雑になりすぎました。なんか、簡単にバグを見つける方法がないかな〜っていうことで、いろいろ考えたのですが、思いつかなかったため、まず最初にエラーとなっているプログラムファイルを単独で動作させて見て原因を探してみました。そうしたところ、エラーにならない・・・?そうだよね・・・。単体でデバックしてから結合しているんだから、単体ではエラーにならないよね・・・。
結局長いプログラムを順をおっていったところ、やっと分かりました。セッション変数を受渡しをしている各プログラムの共通の部分で、誤った使い方をしていました。共通と言っても同じロジックを各プログラムでもっていたので、1つ1つプログラムの当該箇所を検索し修正し先ほど完了しました。
普通共通関数などにしておくものなのですが、開発当初はこんなに多く使われていると想定していなかったため、各プログラムに同じロジックを作り込むことになってしまいました。それと、10行程度のロジックだしね・・・。ただ、保守性も考えたら、動くことを確認したら共通化することを検討したいと思います。
[テーブルロック、テーブルアンロック]
テーブルロックメソッドとテーブルアンロックメソッドは、単体で試験を終え今回初めて結合したのですが、以上のエラーがなくなっても、同ロジックでエラーになります。またか・・・、って感じなのですが、これは、ケアレスミス・・・。テーブルロック、テーブルアンロックに使用するのは、データベース接続変数なのですが、ステートメントで、テーブルロック、テーブルアンロックをしようとしていました(笑)。単体でエラーにならなかったのはなぜなんだろうか?
[あとがき]
以上の作業を本日実施し、ログイン画面でエラーにならないところまで確認できました。そんなに時間をかけるつもりはなかったのですが、朝から夕方までかかってしまいました。本日の予定がすべて飛んでいます。まっ、進捗欲しかったから仕方がないんだけれど・・・。ただ、まだログインまでできていないのは残念です。
ブログですが、日曜日までお休みを頂きます。次ブログ更新は、日曜日もしかしたら月曜日になるかもしれません。
では、また!
【このカテゴリーの最新記事】