1

我对 PHP OOP 比较陌生,似乎无法通过控制器调用 PHP 类中的函数。我目前的设置是:

  • 索引.php
  • 类.Class1.php
  • 函数.controller.php
  • 脚本.js

index.php我包括class.Class1.php,创建一个新的 Class 对象并使用它的几个方法来输出一些 HTML。我想使用script.js中的 js 函数(通过使用链接的 onclick 属性调用)与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 中没有这样的文件或目录/Test/functions/functions.controller.php 在第 7 行

[2011 年 10 月 25 日 01:24:06] PHP 警告:include() [function.include]:无法打开“classes/class.Class1.php”以包含(include_path='.:/Applications/MAMP/bin/ php5.3/lib/php') 在第 7 行的 /Users/Joey/Desktop/root/Test/functions/functions.controller.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 技巧的 PHP OOP MVC。如果需要更多我当前的代码,我很乐意发布。

4

2 回答 2

1

PHP 找不到“classes/class.Class1.php”,因为它的父级(“/Users/Joey/Desktop/root/Test/”)不在 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 回答