Внутри класса при помощи require_once включаю файл, который содержит другой класс (фабрика). Если вместо require_once поместить текст включаемого файла, то будет ошибка, а так нет. Как объяснить такое поведение интерпретатора?
Спустя 2 минуты, 17 секунд (21.05.2011 - 17:55) sharki написал(а):
Гость_Юрий
А в тексте сколько раз упоминается require_once ?
А в тексте сколько раз упоминается require_once ?
Спустя 5 минут, 43 секунды (21.05.2011 - 18:01) alex12060 написал(а):
Потому что, если класс Фабрика содержит другие включения файлов, то при включении файла Фабрика файл остается на своем месте, соответственно, ссылки для включения не нарушаются, но а если его физически перенести в другой файл, то соответственно надо менять ссылки для подключения других файлов.
Как то так)
Как то так)
Спустя 3 минуты, 56 секунд (21.05.2011 - 18:05) Гость_Юрий написал(а):
Не нужно "как-то" так, если не знаете, то не нужно говорить непонятные слова.
Спустя 7 минут, 52 секунды (21.05.2011 - 18:13) sharki написал(а):
Гость_Юрий
Ой зря вы так. Любой программист это НЕ дитя Ванга, которое может видеть чужие коды и анализировать его.
Ой зря вы так. Любой программист это НЕ дитя Ванга, которое может видеть чужие коды и анализировать его.
Спустя 10 минут, 59 секунд (21.05.2011 - 18:24) alex12060 написал(а):
Гость_Юрий
Как то так, так то так. Если не понимаете из вышесказанного ничего, то я уж не знаю.
Извольте предоставить свой код, который вызывает у Вас трудности, тогда и разберемся. Я вижу проблему только пока в этом.
Как то так, так то так. Если не понимаете из вышесказанного ничего, то я уж не знаю.
Извольте предоставить свой код, который вызывает у Вас трудности, тогда и разберемся. Я вижу проблему только пока в этом.
Спустя 17 минут (21.05.2011 - 18:41) Guest написал(а):
// classes.php
class a {
public function get() {
echo 'Гав-гав';
}
}
// index.php
class b {
public static function get() {
require_once('classes.php');
return new a();
}
}
b::get()->get();
Тут всё пучком
class a {
public function get() {
echo 'Гав-гав';
}
}
// index.php
class b {
public static function get() {
require_once('classes.php');
return new a();
}
}
b::get()->get();
Тут всё пучком
Спустя 58 секунд (21.05.2011 - 18:42) Guest написал(а):
class b {
public static function get() {
class a {
public function get() {
echo 'Гав-гав';
}
}
return new a();
}
}
b::get()->get();
Тут ошибка, естественно
public static function get() {
class a {
public function get() {
echo 'Гав-гав';
}
}
return new a();
}
}
b::get()->get();
Тут ошибка, естественно
Спустя 1 минута, 14 секунд (21.05.2011 - 18:43) Гость_Юрий написал(а):
Вот код. Вопрос, думаю, глянете выше?
Спустя 3 минуты, 39 секунд (21.05.2011 - 18:47) alex12060 написал(а):
Как Вы сделали эти 2 класса в 1 файл?
Спустя 2 минуты, 9 секунд (21.05.2011 - 18:49) Greg1978 написал(а):
Это кто такой синтаксис определения классов придумал?
Учим теор часть!
Учим теор часть!
Спустя 3 минуты, 3 секунды (21.05.2011 - 18:52) Guest написал(а):
Ребяты, вопрос на засыпку.
Внутри класса при помощи require_once включаю файл, который содержит другой класс (фабрика). Если вместо require_once поместить текст включаемого файла, то будет ошибка, а так нет. Как объяснить такое поведение интерпретатора?
// classes.php
class a {
public function get() {
echo 'Гав-гав';
}
}
// index.php
class b {
public static function get() {
require_once('classes.php');
return new a();
}
}
b::get()->get();
Тут всё пучком
class b {
public static function get() {
class a {
public function get() {
echo 'Гав-гав';
}
}
return new a();
}
}
b::get()->get();
Тут ошибка, естественно
Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Быстрый ответ
Внутри класса при помощи require_once включаю файл, который содержит другой класс (фабрика). Если вместо require_once поместить текст включаемого файла, то будет ошибка, а так нет. Как объяснить такое поведение интерпретатора?
// classes.php
class a {
public function get() {
echo 'Гав-гав';
}
}
// index.php
class b {
public static function get() {
require_once('classes.php');
return new a();
}
}
b::get()->get();
Тут всё пучком
class b {
public static function get() {
class a {
public function get() {
echo 'Гав-гав';
}
}
return new a();
}
}
b::get()->get();
Тут ошибка, естественно
Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Быстрый ответ
Спустя 1 минута, 54 секунды (21.05.2011 - 18:54) alex12060 написал(а):
Потому что в классе писать класс нельзя!!
<?php
error_reporting(E_ALL);
class b {
public static function get() {
return new a();
}
}
class a {
public function get() {
echo 'Гав-гав';
}
}
b::get()->get();
die();
?>
Спустя 2 минуты, 22 секунды (21.05.2011 - 18:56) Greg1978 написал(а):
Это не поведение интерпритатора в целом, на уровне трансляции происходит ошибка так как такой синтаксис описания классов и их включения не правилен.
Спустя 4 минуты, 39 секунд (21.05.2011 - 19:01) Гость_Юрий написал(а):
Бля, вы чё там. )))
Инструкция require_once('classes.php') что делает? Включает текст своего файла вместо себя. Так? Я и спрашиваю, как такое может быть. Класс в классе! В одном случае (там где require_once('classes.php')) ошибки нет, а там где класс в классе - есть. А то что во втором случае синтаксис не правильный - это даже Шарику понятно.
Инструкция require_once('classes.php') что делает? Включает текст своего файла вместо себя. Так? Я и спрашиваю, как такое может быть. Класс в классе! В одном случае (там где require_once('classes.php')) ошибки нет, а там где класс в классе - есть. А то что во втором случае синтаксис не правильный - это даже Шарику понятно.
Спустя 3 минуты, 32 секунды (21.05.2011 - 19:04) Greg1978 написал(а):
Ещё раз на пальцах.
Ошибка происходит на уровне трансляции.
Если немножечко погуглить можно узнать что инструкции включения не подставляют код в другой код а транслируются и исполняются отдельно, просто точка включения даёт команду интерпритации а не копирования кода и вставки его на место. Учим мат часть по серверу.
Ошибка происходит на уровне трансляции.
Если немножечко погуглить можно узнать что инструкции включения не подставляют код в другой код а транслируются и исполняются отдельно, просто точка включения даёт команду интерпритации а не копирования кода и вставки его на место. Учим мат часть по серверу.
Спустя 15 минут, 30 секунд (21.05.2011 - 19:20) Гость_Юрий написал(а):
Спасибо Greg1978-у. Что-то вроде прояснилось. Хотя бытует мнение, что таким образом инструкцию require_once('classes.php') в фабрике не желательно использовать - это не правильно. Есть более правильное решение для фабрики?
Спустя 8 минут, 31 секунда (21.05.2011 - 19:28) Greg1978 написал(а):
Нет, в плане не использовать в рекурсии точки включения не стоит использовать с приставкой _once просто в этом случае интерпритатор дополнительно проверяет наличие уже странслированного файла и если находит его то уже повторно не включает. Эти инструкции немного "тяжелее" своих "родителей".
Спустя 6 минут, 45 секунд (21.05.2011 - 19:35) Гость_Юрий написал(а):
Ага. Ещё раз спасибо, а то Евгений Панин утверждал, что так делать нельзя. Теперь буду знать, что он немножко лукавил.