2009-07-21 19 views
0

includerequireの違いを知っています。私はrequireをプロジェクトのいくつかの場所で使っています。PHPのinclude/requireを理解するのに役立ちます

しかし、ここには次のようなものがあります:私はONCEファイルをインクルードし、他のインクルードファイルから関数を呼び出せます。

<?php 
    require_once('include/dal.php'); 
    require_once('include/bll.php'); 
    require_once('include/jquery_bll.php'); 
?> 

さて、私のjavascriptので、私はjQuery.postを使用してjquery_bll.phpを呼び出し、そしてjquery_bll.phpファイルIでよ:私のheader.phpのファイルで

、私は次のコードを持っています次のコードを持っている:

$myDB = new DAL(); 

私の問題は、私は、エラー・メッセージ「には見られないクラス 『DAL』(..)\ jquery_bll.php」を得ることです。

私は、それはそう、とにかくheader.phpの中に必要なファイルを含むのがある...「スコープ」か何かの外のため、

ファイルは、JavaScriptから呼び出されたので、私はこのメッセージを取得偵察し、同じファイルを再度含むことについて心配する必要はありませんか?

答えて

4

また、あなたのjquery_bll.phpの上

require_once('include/dal.php'); 
    require_once('include/bll.php'); 

を入れ、またはそこにあなたの完全なヘッダファイルをインクルードする必要があります。

JavaScriptがjquery_bll.phpにコールバックすると、これは別のHTTPリクエストであり、PHPはそのファイルのみを評価します。そのファイルにはheader.phpが含まれていないように見えるため、DALクラスがロードされていることを確認する文は実行されません(require_once)。

+1

もちろん、彼は正しいです。これらのrequire_once構造体は、HTTP要求ごとに呼び出され、ファイルの内容が利用可能であることを確認する必要があります。 –

+0

大丈夫、クリスが間違っていると言って、私の上にいくつかのコメントがありました... –

+0

ええ、私のところにも起こった、ちょうど私のコメントを削除:-D –

0

クライアントからjquery_bll.phpへのリクエストが行われると、それはまったく新しいページと呼ばれます。以前のリクエストに含まれるものなどは忘れています。だから、提案されているように、必要な 'インクルード'をjquery_bll.phpの先頭にもう一度含めなければなりません。

EDIT: あなたがPHP5を使用している場合、あなたはあなたのクラスがまだけれども

function __autoload($class_name) { 
require_once 'include/' . $class_name . '.php'; 

}

が定義されていない場合は/フォルダを含めるに見てもらうことができ、そのautoload機能を使用することができますあなたは大文字と小文字を注意深く見なければならないでしょうし、おそらくdalとDALの両方で何らかの処理をする必要があります

+0

ええと。 htmlヘッダーにjsファイルをインクルードするときと同じ方法で、インクルードされたファイルがいくつかのメモリーバンクに存在することを期待していました。 – Steven

+0

返信として私の編集を参照してください –

関連する問題