1

私はPHPOOPに比較的慣れていないので、コントローラーを介してPHPクラスの関数を呼び出すことができないようです。私の現在の設定は次のとおりです。

  • index.php
  • class.Class1.php
  • Functions.controller.php
  • script.js

index.php内にclass.Class1.phpを含め、新しいClassオブジェクトを作成し、そのメソッドのいくつかを使用してHTMLを出力します。script.jsのjs関数(リンクのonclick属性を使用して呼び出される)を使用してfunctions.controller.phpと通信したいのですが、functions.controller.phpは、class.Class1.phpのメソッドを呼び出し、データをscript.jsに返します。次に、 index.phpにHTMLを出力します。

問題は、その特定のオブジェクトのデータを取得するためのメソッドの使用方法がわからないことです。コントローラを呼び出すと:

$.ajax({
    type: 'GET',
    url: 'functions/functions.controller.php',
    data: 'r=' + 'h',
    success: function(data){
        $('.showing').html(data);
    }
});

500内部サーバーエラーが発生します:

[25-Oct-2011 01:24:06] PHP警告:include(classes / class.Class1.php)[function.include]:ストリームを開くことができませんでした:/ Users / Joey / Desktop/rootにそのようなファイルまたはディレクトリはありません7行目の/Test/functions/functions.controller.php

[25-Oct-2011 01:24:06] PHP警告:include()[function.include]:インクルードのために'classes / class.Class1.php'を開くことができませんでした(include_path ='。:/ Applications / MAMP / bin / 7行目の/Users/Joey/Desktop/root/Test/functions/functions.controller.phpのphp5.3/lib / php')

[25-Oct-2011 01:24:06] PHP致命的なエラー:9行目の/Users/Joey/Desktop/root/Test/functions/functions.controller.phpにクラス「Class1」が見つかりません

これはcontroller.phpです:

include('classes/class.Class1.php');

$in = new Class1;

echo $in->getData();

誰かがこれに光を当ててくれませんか?また、AJAXのヒントを備えた他のPHPOOPMVCも歓迎します。現在のコードがさらに必要な場合は、喜んで投稿します。

4

2 に答える 2

1

PHPは、その親( "/ Users / Joey / Desktop / root / Test /")がファイルを含めるときにPHPが検索するパスに含まれていないため、 "classes/class.Class1.php"を見つけることができません。「/Users/ Joey / Desktop / root / Test /」を、php.ini.htaccess(PHPをApacheモジュールとして実行している場合)、またはプログラムでインクルードパスに追加します。最後のケースでは、ドキュメントルートを使用できます。たとえば、がドキュメントのルートである場合、「/ Users / Joey / Desktop / root /」(検索パスに追加されるフォルダの親)は次のようになります。

set_include_path(get_include_path() . PATH_SEPARATOR 
                 . $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'Test');

インクルードパスを更新するコードを、追加するフォルダーにある初期化ファイルに配置すると、次のコマンドを使用できます。

set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__);
于 2011-10-24T23:35:15.597 に答える
0

インクルードパスが混同されているようです。

私はあなたのファイル構造が実際にあると仮定しています

index.php
classes/class.Class1.php
functions/functions.controller.php
script.js

class.Class1.phpfromを含めるにはfunctions.controller.php、最初にディレクトリをトラバースしてディレクトリから出る必要がありますfunctions。たとえば、

// PHP >= 5.3
require_once __DIR__ . '/../classes/class.Class1.php';

// PHP < 5.3
require_once dirname(__FILE__) . '/../classes/class.Class1.php`;
于 2011-10-24T23:32:46.750 に答える