|
|
|
| Доброе время суток!
Столкнулся с проблемой, что вызов require() из класса не приводит к желаемому результату.
Не знаю как правильно объяснить, покажу на примере.
Есть два файла: 1.php и 2.php
В 1.php:
class Class1{
function Class1(){
require "2.php";
}
}
$class1 = new Class1();
, а в 2.php:
class Class2{
...
}
$class2 = new Class2();
После выполнения 1.php мы получим, что Class2 будет "сидеть" внутри Class1. А как сделать, чтобы этого не было, чтобы это были два отдельных класса? Т.е. сделать require() как будто не из класса, а из самого документа.
В данном примере первое, что приходит для решение моей проблемы, это GLOBALS, но здесь я написал упрощенный вариант структуры классов, и в настоящем варианте GLOBALS не помогает и приводит к ошибке "Notice: Trying to get property of non-object".
Вызов require() производится имено из Class1.
Заранее благодарен! | |
|
|
|
|
|
|
|
для: blaze
(07.10.2007 в 01:27)
| | Хм... не понятно, почему бы вам Class2 не подключать перед объявлением Class1
<?php
// Подключаем Class2
require_once("class.2.php");
// Объявляем Class1
class Class1{
...
}
?>
|
PS Или требуется, чтобы оба класса взаимодействовали? | |
|
|
|
|
|
|
|
для: cheops
(07.10.2007 в 10:39)
| | Я так понимаю при непосредственном взаимодействии классов теряется смысл ООП. Или я ошибаюсь? | |
|
|
|
|
|
|
|
для: Valick
(07.10.2007 в 10:46)
| | Под непосредственным взаимодействием что подразумевается?
PS Вообще говоря объекты классов и сами классы не могут не взаимодействовать, как не могут не взаимодействовать объекты реального мира. Всё зависит от предметной области, которая моделируется. ООП - это не только наследование, включение в нём тоже используется интенсивно. Вы не создадите автомобиль наследуя от колёс двигатель, а от двигателя салон - тут как раз подойдёт включение. А включением миллиона амёб класс слона не создать - здесь лучше отталкиваться от наследования свойств. | |
|
|
|
|
|
|
|
для: cheops
(07.10.2007 в 10:54)
| | Дело в том, что класс (главный) генерирует во время выполнения скрипта имя php файла, который потом запускает на выполнение и его содержимое сохраняет в переменную. Файл, к которому обращается класс, в свою очередь тоже содержит класс (классы), которые взаимодействуют с главным классом. | |
|
|
|