PHP ООП, JQuery и MVC - PullRequest
       8

PHP ООП, JQuery и MVC

1 голос
/ 25 октября 2011

Я относительно новичок в ООП PHP и, похоже, не могу вызывать функции в классе PHP через контроллер.Моя текущая настройка:

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

В index.php я включаю class.Class1.php , создаю новый объект Class и использую несколько его методов для вывода некоторого HTML.Я хочу использовать функции js в script.js (вызываемые с помощью атрибута onclick ссылки) для взаимодействия с functions.controller.php , который, в свою очередь, будет вызывать методы в class.Class1.php и вернуть данные в script.js , который, в свою очередь, выведет HTML на index.php .

Проблема заключается вчто я не знаю, как использовать методы, чтобы получить данные этого конкретного объекта.Когда я вызываю контроллер:

$.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 (классы/class.Class1.php) [function.include]: не удалось открыть поток: такого файла или каталога нет в /Users/Joey/Desktop/root/Test/functions/functions.controller.php в строке 7

[25-Oct-2011 01:24:06] Предупреждение PHP: include () [function.include]: Не удалось открыть 'classes / class.Class1.php' для включения (include_path = '.: / Applications / MAMP / bin/php5.3/lib/php ') в /Users/Joey/Desktop/root/Test/functions/functions.controller.php в строке 7

[25 октября 2011 года 01:24:06]Неустранимая ошибка PHP: класс 'Class1' не найден в /Users/Joey/Desktop/root/Test/functions/functions.controller.php в строке 9

Это controller.php:

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

$in = new Class1;

echo $in->getData();

Кто-нибудь может пролить свет на это?Также приветствуются любые другие PHP OOP MVC с советами AJAX.Если понадобится больше моего текущего кода, я буду рад опубликовать.

Ответы [ 2 ]

1 голос
/ 25 октября 2011

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__);
0 голосов
/ 25 октября 2011

Похоже, вы путаете ваши включаемые пути.

Я предполагаю, что ваша файловая структура на самом деле

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

Чтобы включить class.Class1.php из 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`;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...