Ошибка синтаксиса Php - PullRequest
       46

Ошибка синтаксиса Php

0 голосов
/ 14 июля 2011

Привет, у меня следующая структура каталогов:

Основная папка -> Классы -> классы пользователя

все вложены друг в друга.У меня есть следующие файлы внутри Каталог классов

always_include_top.php
custom_error_handler.php
config.php
database.php

Из которого файл database.php выглядит следующим образом:

<?php
include_once("always_include_top.php");

include_once("config.php");
include_once("custom_error_handler.php");

include_once ("user_classes/newDatabase.php");

class Database extends newDatabase
{

// some more code... with extra functions
    public function dbBackUp($backupfile = NULL)
    {
        //code...
    }
}
?>

У меня есть следующий файл вПользователь каталог user_classes

newDatabase.php

Пример кода для этого файла

<?php
include_once("../always_include_top.php");

include_once("../config.php");
include_once("../custom_error_handler.php");
error_reporting(E_ALL);

class newDatabase
{
   // my code goes here
}

?>

Почему я получаюследующая ошибка в classes / database.php (нет ошибки в classes / user_classes / newDatabase.php )

Предупреждение: include_once (../ always_include_top.php) [function.include-once]: не удалось открыть поток: нет такого файла или каталога в E: \ wamp \ www \reeting_cards \ adm \ classes \ user_classes \ database.php в строке 2

Предупреждение: include_once () [function.include]: не удалось открыть «../always_include_top.php» для включения (include_path = '.; C: \ php \ pear') в E: \ wamp \ www \reeting_cards \ adm \ classes \user_classes \ database.php в строке 2

Предупреждение: include_once (../ config.php) [function.include-Once]: не удалось открыть поток:Нет такого файла или каталога в E: \ wamp \ www \reeting_cards \ adm \ classes \ user_classes \ database.php в строке 4

Предупреждение: include_once () [function.include]: не удалось открыть '../config.php 'для включения (include_path =' .; C: \ php \ pear ') в E: \ wamp \ www \reeting_cards \ adm \ classes \ user_classes \ database.php в строке 4

Предупреждение:include_once (../ custom_error_handler.php) [function.include-Once]: не удалось открыть поток: Нет такого файла или каталога в E: \ wamp \ www \reeting_cards \ adm \ classes \ user_classes \ database.php в строке 5

Предупреждение: include_once () [function.include]: не удалось открыть '../custom_error_handler.php' для включения (include_path = '.; C: \ php \ pear') в E: \ wamp \ www \reeting_cards \ adm \ classes \ user_classes \ database.php в строке 5

Неустранимая ошибка: невозможно переопределить класс Database в E: \ wamp \ www \reeting_cards \ adm \ classes \ database.php в строке 12

Я хочу, чтобы оба файла компилировались по отдельности.Как я хотел бы включить файлы в другие файлы на основе типов страниц.В чем проблема с включением здесь?

1 Ответ

1 голос
/ 14 июля 2011

Когда вы используете include_once(), он не изменяется на каталог, в котором находится конкретный файл и выполняет его там, он выполняет содержимое этого файла в контексте текущего файла. Итак, classes / user_classes / database.php выполняется так, как если бы он находился в папке классов. «..» в этом случае относится к основной папке, поэтому он ищет первые три файла в основной папке. Эти файлы не находятся в главной папке, поэтому они выдают предупреждения.

...