переменные и include

 
0
 
PHP
ava
idti | 17.03.2010, 21:50
Если подключить скрипт с помощью include, будут ли в нем видны переменные типа объект, которые созданы в основном скрипте? И как долго. Не вызовет ли сборщик мусора деструктор.
Ответы (26)
ava
nerezus | 17.03.2010, 22:25 #
Будут видны. Всегда. Но это ужасный код.
Не вызовет.
ava
bars80080 | 18.03.2010, 01:51 #
Цитата (nerezus @ 17.3.2010, 21:25 findReferencedText)
Но это ужасный код.

почему?

с чем тогда работает код в инклудах?
ava
nerezus | 18.03.2010, 02:38 #
bars80080, ну я не вижу причин использовать подключение файлов для чего-то отличного от классов и шаблонов ;)
ava
Guedda | 18.03.2010, 11:00 #
Почитайте соглашение PEAR, и поймете, почему это
Цитата (nerezus @ 17.3.2010, 22:25 findReferencedText)
ужасный код.

ava
bars80080 | 18.03.2010, 11:12 #
Цитата (Guedda @ 18.3.2010, 10:00 findReferencedText)
Почитайте соглашение PEAR, и поймете, почему это

м-м-м, а где это?


Цитата (nerezus @ 18.3.2010, 01:38 findReferencedText)
я не вижу причин использовать подключение файлов для чего-то отличного от классов и шаблонов ;)

так, допустим такой пример. есть сайт, на нём есть страница с лентой новостей, а на других страницах её нет. мы реализуем эти новости в виде класса, ну или набора функций, запихиваем в файл и при переходе по ссылке /news.php подключаем этот файл в index.php.
далее, по-моему, не имеет смысла запихивать вызов этой ленты в index.php, лучше так его и оставить в news.php. но ведь скрипт новостей будет использовать классы работы с БД или сборщик страницы, чтобы закинуть в общий ряд упомянутые в нём ссылки на файлы стилей, скриптов и т.д.
как тогда дать ему возможность работать с БД, не отдавая туда объекта? не создавать же каждый раз новое подключение?
да и сборщик страницы всегда один
ava
Guedda | 18.03.2010, 11:38 #
Цитата (bars80080 @ 18.3.2010, 11:12 findReferencedText)
м-м-м, а где это?

http://pear.php.net/
ava
nerezus | 18.03.2010, 11:41 #
bars80080,
Цитата


скрипт новостей будет использовать [skipped] сборщик страницы,


Что? Разберитесь, кто кого будет использовать.
Сборщик страницы запускается в конце отработки модулей(и новости - один из них).
И ваш вопрос пропадет, и структура сильно упростится из "лапши" в дерево.
ava
Fortop | 18.03.2010, 12:02 #
Цитата (Guedda @ 18.3.2010, 10:00 findReferencedText)
Почитайте соглашение PEAR

Мгм, и что там написано по-поводу include? не просветите?
ava
bars80080 | 18.03.2010, 12:10 #
Цитата (nerezus @ 18.3.2010, 10:41 findReferencedText)
Что? Разберитесь, кто кого будет использовать.

Сборщик страницы запускается в конце отработки модулей(и новости - один из них).

И ваш вопрос пропадет, и структура сильно упростится из "лапши" в дерево.

у-у, там не дерево, там сталь

а как в таком случае будет выглядеть подключение из модуля файла news.css для показа собственных стилей?

и что касаемо БД?

Добавлено позднее:
Цитата (Guedda @ 18.3.2010, 10:38 findReferencedText)
http://pear.php.net/

битая ссылка
ava
nerezus | 18.03.2010, 17:25 #
Цитата


а как в таком случае будет выглядеть подключение из модуля файла news.css для показа собственных стилей?

1) В общий CSS.
2) Добавляешь к плейсхолдеру css лейаута в модуле новостей.

Какой больше нравится - тот и выбирай.

Цитата


и что касаемо БД?

Registry/

Цитата


битая ссылка

Ты не знаешь про адрес pear? smile
P.S. Не битая.
ava
bars80080 | 18.03.2010, 18:09 #
Цитата (nerezus @ 18.3.2010, 16:25 findReferencedText)
1) В общий CSS

в смысле, в общий? это частный набор стилей от модуля. модулей может быть и с сотню, от этого общий файл радует до небес.
ну и не хотелось бы кого-либо допускать до главных настроек, даже себя.

Цитата (nerezus @ 18.3.2010, 16:25 findReferencedText)
Добавляешь к плейсхолдеру css лейаута в модуле новостей.

какому холдеру? какого лейаута?

Цитата (nerezus @ 18.3.2010, 16:25 findReferencedText)
Registry/

куда это писать?

Цитата (nerezus @ 18.3.2010, 16:25 findReferencedText)
Ты не знаешь про адрес pear?

адрес может быть и знаю, но если человек хочет на что-то указать, то мог бы побеспокоится о ссылке. либо так и сказать "вроде там, где-то видел". у меня нет никакого желания рыть тонны текста ради некой волшебной строчки.
вот к примеру, на указанной странице о конструкции include ничего не говорится


Цитата (nerezus @ 18.3.2010, 16:25 findReferencedText)
Не битая.

в прошлый раз почему-то зайти не удалось
ava
nerezus | 18.03.2010, 18:12 #
Цитата


какому холдеру? какого лейаута?

Placeholder, layout.

Цитата


куда это писать?

В код после изучения ООП.
ava
bars80080 | 18.03.2010, 18:43 #
Цитата (nerezus @ 18.3.2010, 17:12 findReferencedText)
В код после изучения ООП.

в том месте где изучал, не видел Registry


Цитата (nerezus @ 18.3.2010, 17:12 findReferencedText)
Placeholder, layout.

посик выдал более 1000 ссылок. вот первая. оно?

ava
idti | 18.03.2010, 21:45 #
Цитата (bars80080 @ 18.3.2010, 11:12 findReferencedText)
как тогда дать ему возможность работать с БД, не отдавая туда объекта? не создавать же каждый раз новое подключение?

Аналогичная ситуация, вот только передаваемый объект оказывается периодочески вовсе не объектом.

Цитата (nerezus @ 18.3.2010, 11:41 findReferencedText)
Разберитесь, кто кого будет использовать.Сборщик страницы запускается в конце отработки модулей(и новости - один из них).И ваш вопрос пропадет, и структура сильно упростится из "лапши" в дерево.

Тут ничего не понять.

Цитата (nerezus @ 18.3.2010, 17:25 findReferencedText)
 Registry/

Это вообще к чему.
ava
Fortop | 18.03.2010, 23:09 #
Цитата (idti @ 18.3.2010, 20:45 findReferencedText)
Аналогичная ситуация, вот только передаваемый объект оказывается периодочески вовсе не объектом. 

В честь чего?

И можно скромный вопрос?
Как вы передаете объект в include? smile
ava
idti | 18.03.2010, 23:33 #
Цитата (Fortop @ 18.3.2010, 23:09 findReferencedText)
В честь чего?

В честь ошибки non-object. Которая возникает редко, замечалось только на медленных соединениях.

Цитата (Fortop @ 18.3.2010, 23:09 findReferencedText)
Как вы передаете объект в include?

Никак это не мои слова, оратор из процитированного так написал. Объект просто видим в подключаемом файле. Подключаемый файл работает и отдельно. Для этого там есть проверка типа:

if (isset($connect)) {
$connect->getThisUp();
} else {
$connect = new classConnect();
$connect->getThisUp();
}

Ошибка возникает, когда вызывается метод. И заключается в вызове метода у non-object переменной.
ava
Fortop | 19.03.2010, 00:54 #
Цитата (idti @ 18.3.2010, 22:33 findReferencedText)
В честь ошибки non-object. Которая возникает редко, замечалось только на медленных соединениях.

Ошибка возникает, когда вызывается метод. И заключается в вызове метода у non-object переменной.

Отладить не?

Причин может быть всего 2ве.
1. объект не создался.
2. объект был затерт другим значением.
ava
idti | 19.03.2010, 09:06 #
Цитата (Fortop @ 19.3.2010, 00:54 findReferencedText)
Отладить не?

Как отладить, если ошибка не постоянная.

Цитата (Fortop @ 19.3.2010, 00:54 findReferencedText)
Причин может быть всего 2ве.1. объект не создался.2. объект был затерт другим значением.

Затереться не мог.
ava
Fortop | 19.03.2010, 13:15 #
Цитата (idti @ 19.3.2010, 08:06 findReferencedText)
Как отладить, если ошибка не постоянная.

Логи, руки и мозги.

Делается полное логирование происходящего и затем ждется или пытается воспроизвести ошибку.
Потом по логам смотрим где, что, когда и при каких условиях.

Цитата (idti @ 19.3.2010, 08:06 findReferencedText)
Затереться не мог.

Такое может быть при любом коде.
А уж в коде с глобальными переменными, да еще написанным лапшой, произойти такому случаю - раз плюнуть.
Поэтому я бы не был столь уверен.
ava
idti | 19.03.2010, 20:21 #
Цитата (Fortop @ 19.3.2010, 13:15 findReferencedText)
Логи, руки и мозги.

Где-то были, поищу.
Цитата (Fortop @ 19.3.2010, 13:15 findReferencedText)
Такое может быть при любом коде. А уж в коде с глобальными переменными, да еще написанным лапшой, произойти такому случаю - раз плюнуть.Поэтому я бы не был столь уверен.

Чем бы он затерся. Эта переменная используется только для объекта.
ava
nerezus | 20.03.2010, 12:05 #
Цитата


не видел Registry

http://design-pattern.ru/patterns/registry.html

Ну и это в тему почитай: http://php.net/manual/en/language.oop5.patterns.php

Цитата


Placeholder, layout.

Их смысл в их переводе.
Placeholder - местодержатель. Т.е. просто хреновинка в шаблоне, к которой в дальнейшем можно что-то добавить, ориентируясь на ее имя.

Layout вот тут описан: http://design-pattern.ru/patterns/two-step-view.html

Цитата


Это вообще к чему.

К решению "не лапша".

Цитата


Затереться не мог.

Допустим приходит второй человек на твой проект... и ответ меняется на "мог" по понятным причинам.

Цитата


Как отладить, если ошибка не постоянная.

http://phpfaq.ru/debug
ava
idti | 20.03.2010, 17:48 #
Цитата (nerezus @ 20.3.2010, 12:05 findReferencedText)
Допустим приходит второй человек на твой проект... и ответ меняется на "мог" по понятным причинам.

По непонятным вообще то. Поясни, может в этом дело.
Цитата (nerezus @ 20.3.2010, 12:05 findReferencedText)
 http://design-pattern.ru/patterns/registry.html

Классно, только не понятно как из лапши макароны получатся.
ava
idti | 05.04.2010, 09:33 #
Цитата (nerezus @ 20.3.2010, 12:05 findReferencedText)
Допустим приходит второй человек на твой проект... и ответ меняется на "мог" по понятным причинам.

Вот это мне не дает покоя. Как скрипт второго человека окажет влияние на скрипт первого?
ava
nerezus | 05.04.2010, 10:51 #
idti, вторрой человек может изменить скрипт первого. И первый будет уверен в своем коде, а окажется, что второй там уже что-то изменил и уверенность первого ложная.
ava
idti | 05.04.2010, 12:38 #
Цитата (nerezus @ 5.4.2010, 10:51 findReferencedText)
idti, вторрой человек может изменить скрипт первого. И первый будет уверен в своем коде, а окажется, что второй там уже что-то изменил и уверенность первого ложная.

Бугага. В этом смысле. Я то думал речь идет о посетителях портала и тонкостях исполнения скриптов веб сервером.
ava
idti | 05.04.2010, 13:38 #
Цитата (idti @ 5.4.2010, 12:38 findReferencedText)
Я то думал речь идет о посетителях портала и тонкостях исполнения скриптов веб сервером.

Кстати. Ошибка постоянная, и возникает при обновлении страницы пары раз подряд. Похоже сервер просто рубит невостребованный скрипт(притом начинает с объект-переменных), а обновленная страница загружается без ошибок. Ошибки только в логе, ошибки прервавшегося скрипта по-видимому.

Если сервер действительно рубит скрипт отсоединившегося клиента, это бы все объяснило.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить