• ベストアンサー

cakePHP app_controllerのコンストラクタ

すみません、初歩的なことだとは思いますが、教えて下さい。 全ページに共通するロジックがあるので、 app_controllerのコンストラクタに書けないかなと思ったんですが、 Call to a member function init() on a non-object in と怒られます。 app_controllerにはコンストラクタは使えないんですか? 全ページに反映させたい場合はどこにどう書けばいいんでしょうか? よろしくお願いいたします。

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

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

  • ベストアンサー
noname#94983
noname#94983
回答No.2

>appでは使えないんでしょうか・・・ ん? そんなことはないぞ。さっき試してみたが、app_controller.phpのコンストラクタをオーバーライドして問題なく動いているがな。 class AppController extends Controller { public function __construct(){ parent::__construct(); // ここに処理を追記 } } これでこっちでは全く問題なく動いている。 ひょっとして、スーパークラスにコンストラクタの呼び出しを渡すのを忘れたりしてないだろうか。

seiroku55
質問者

お礼

parent::__construct(); これでした。 全然理解してなかったんですね。 勉強になりました。 ありがとうございます!

その他の回答 (1)

noname#94983
noname#94983
回答No.1

initではなく、function __construct()で書いたらどうだろうか。

seiroku55
質問者

お礼

ご回答ありがとうございます。 function __construct(){ } で書いて、 Call to a member function init() on a non-object in /home/wwwuser/htdocs/cake/cake/libs/controller/controller.php on line 413 ってエラーがでます。 バージョンは1.2です。 appでは使えないんでしょうか・・・

関連するQ&A

  • cakephp POSTデータにSETする方法

    POSTのデータに無理やり初期値をSETしたいのですが $this->data->set($data); とやると Call to a member function set() on a non-object と怒られてしまいます。 宜しくお願いします

    • ベストアンサー
    • PHP
  • Cake2系のコントローラでセッション情報取得

    CakePHP2を使用して、開発を行っているのですが、 AppControllerを継承したControllerのあるメソッドで、 別のコントロー(AppController継承)をnewでインスタンスを生成し、 自前のコントローラのあるメソッドを呼び出しているのですが、 自前のコントローラのメソッド内で、セッション情報取得しようとすると 「Call to a member function load() on a non-object」 となりエラーになります。 AppControllerには、コンポーネントの呼び出しを行っています。 public $components = array('Common','Session'); newして使わないコントローラだと、セッション情報を取得できるのですが、 newしたコントローラでは、セッション情報にセットした情報を取得することができません。 newしたコントローラへ必要な情報を渡すには引数以外はないのでしょうか。 セッション情報をnewしたコントロールで取得したいのですが、 可能でしょか。

    • ベストアンサー
    • PHP
  • ネットで商品購入時に表示されるエラーメッセージについて

    Fatal error: Call to a member function on a non-object ↑のようなメッセージが表示され、ネットでの手続きが不能になってしまいます。このメッセージの意味、対処の方法を教えて頂きたいのですが。 宜しくお願いします。

  • Smartyでのエラー

    Smartyを使用してみようと思い、displayを使用すると $smarty->display("ファイル名.tpl"); 「Fatal error: Call to a member function display() on a non-object」 と出てしまいます。このエラーはどういう意味なのでしょうか…。

    • ベストアンサー
    • PHP
  • PHP5.1.6で2つのdatetimeの差

    PHP5.1.6を使用すしているのですが 2010-10-04 22:15:00 2010-10-04 22:10:00 といった形式のdatetime型のデータを比較してその差を抽出したいです。 PHP5.3以降なら、DateTime::diffが使えるようなのですが、 PHP5.1.6のため使用しようとしても、 Call to a member function diff() on a non-object と出てしまいます。 どのようにすれば良いか教えていただきたいです。

    • 締切済み
    • PHP
  • cakephp エラーハンドリングができません

    cakephpを利用しているシステムで、2種類のエラーを作っておいてcontrollersの呼び出しで振り分けたいと思いますがうまくできません。 マニュアルページ(http://book.cakephp.org/ja/view/154/Error-Handling)を参考に、 app/app_error.phpを以下のように作成しました。 ((1)エラー:error(2)エラー:errorsta) ----------------------------------------------------------------- <?php class AppError extends ErrorHandler{ function error(){ $this->controller->viewPath = 'errors'; $this->__outputMessage('error'); } function errorsta(){ $this->controller->viewPath = 'errors'; $this->__outputMessage('errorsta'); } } ?> ----------------------------------------------------------------- 上記内容で、メソッドerrorは実行できるのですが、errorstaが一向に動いてくれず、404扱いになってしまいます。 app/app_error.php以外にも設定が必要なものがあるのでしょうか?

    • 締切済み
    • PHP
  • エラーコードの意味を教えてください。

    エラーコード: Call to a member function find() on a non-object in C:\xampp\hairetu2.php on line 29 simple_html_dom.php というファイルを使ってHTMLのソース抜き出しを試みているのですが、 このエラーの意味がgoogleで調べてもそれらしいのがみつからないので ご質問させていただきました。 「対象データがないよ」ってことでしょうか。。。 ご存知の方 ご指摘願います。

    • ベストアンサー
    • PHP
  • cakePHPでSQLが実行できない。

    cakePHP2.2でSQLが実行できません。 実行のやり方が悪いのでしょうが ネットで探してもイマイチ理解できません・・ やりたいのは画面から入力された値を使い SQLを実行することです。 何が駄目なのか教えてください。 controllerのソース <?php class BuhinController extends AppController { public $layout = 'user_default'; //## ログイン処理 public function login(){ $bool = false; $rslt = null; Configure::write('debug', 1); $sql = "select id from table_user where add = '". $_POST["add"] . "' "; $sql = $sql. " and pass = '". $_POST["pass"] . "'"; $this->query($sql); } public function index(){ } public function logout(){ $this->Auth->logout(); } } ?> エラーメッセージ Fatal Error Error: Call to undefined method BuhinController::query() File: C:\xampp\htdocs\cake\app\Controller\BuhinController.php よろしくお願いします。

    • ベストアンサー
    • PHP
  • Call to a member function on a non-object エラー?

    1日から頭を悩ませております。 先輩がいなくなりまして私がやることになったシステムがあるのですがサーバを移転させてからサイトにアクセスすると以下のメッセがでて動かなくなってしまいました。 Call to a member function on a non-object in /home/●●●/www/●●●/home/inc/dataMNG.php on line 134 134行目をみにいくと }else{$_file = substr($file,5); $obj = unserialize(file_get_contents($this->data_dir . "/" . $file)); $list["sub"][$_file] = $obj->toArray(); いろいろとパーミッションなど合わせてみたのですがエラーが消えませんでした。 このエラーのことを調べてみたのですがXOOPSなどのページで参考になりませんでした。 大変申し訳ありませんが、お力をお貸しいただきたいと思います。 よろしくお願いします。

    • 締切済み
    • PHP
  • jQueryのvar jQueryの仕組みについて

    jQuery-1.6.2のソースコードを見ているのですが質問させてください。 25行目の var jQuery = function( selector, context ) { return new jQuery.fn.init( selector, context, rootjQuery ); }, そして100行めの jQuery.fn = jQuery.prototype = { constructor: jQuery, init: function( selector, context, rootjQuery ) { の意味が分かりません。 PHP等のclassになれているとJSのクラスは戸惑うことが多いのですが、この例は最たるもので、自分の中のJSでのclassは (1)スーパークラスのプロパティをcall()、apply()で継承 (2)スーパークラスのメソッドをprototypeオブジェクトで継承 (3)インスタンスのデータ型判定に必要なプロパティをconstructorで調整 だったのですが、スーパークラスがどの行のどれなのかも分かりません。 型やメソッド名からこれらがclassを意味しているのは分かるのですが、いったいどの部分がclass定義、継承を行っているのか教えていただけませんでしょうか? なぜこれらがclassになっているのかが理解できません。 分るのは、jQuery.prototype.constructor = jQueryで、それをjQuery.fnに代入((3))している事です。 329行目の、jQuery.fn.init.prototype = jQuery.fn;の右辺がnew {$class}の形であれば(2)のプロトタイプチェーンの形だと分るのですが。 (1)は、init内でメンバ変数を定義したりしているので、classなのかな、という程度しか分っておりません。 jQuery.fnがコンストラクタで、jQueryがインスタンスで、var jQueryは親クラスをinitしたもの?・・・と混乱しております。 質問内容も文章が混乱していて申し訳ないです。

専門家に質問してみよう