![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| MakNik |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 5.4.2006 Репутация: нет Всего: 0 |
В файле tools.php описаны несколько ф-ций. И в зависимости от условий он либо включается либо нет.
Подскажите, плз., как проверить выполнялась ли уже команда include "tools.php" для избежания повторного вкючения файла tools.php? |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Использовать include_once(), а лучше скрипт по грамотнее спроектировать.
|
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 13 Всего: 78 |
Использовать надо include_once либо require_once...
-------------------- Ll 2 |
|||
|
||||
| szz |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 8 Всего: 33 |
Или, если хочешь вообще bulletproof делай так (примерно как в С делаем):
теперь неважно чем, include или include_once ты используешь - все равно только раз включится. --------------------
|
||||
|
|||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Подключится он столько раз, сколько его вызовет пользователь.
|
|||
|
||||
| szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 8 Всего: 33 |
Фактически - да, но код внутри if(!defined... - только раз.
--------------------
|
|||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 8 Всего: 36 |
Тогда уж
if ( defined( '__TOOLS_PHP__' ) ) return; |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
||||
|
||||
| szz |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 8 Всего: 33 |
и куда мы вернемся? Это ведь тебе не функция. Добавлено @ 19:22
Это нормальная практика, так делается в C и C++ повсеместно:
и вполне законно также и в PHP. Это точно гарантирует, что код включится один раз, что бы ты не использовал include или include_once. По идее include_once - как видно из неуклюжего написания - это своего рода хак, попытка зашить белыми нитками недотепы PHP, такой же как и, например необходимость писать global внутри функции. Как раз то, что я привел - безопаснее и закономернее, чем использование include_once. По закону Мерфи, если есть возможность использовать include (не _once) - то кто-то обязательно когда-нибудь так и сделает. Посмотри историю развития синтаксиса С-образных языков (PHP - один из них, наряду с perl, C++, java, javascript, C# и тд) --------------------
|
||||||||
|
|||||||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 8 Всего: 36 |
А вернемся мы в файл из которого инклюдили. Причем include() вернет результат из этого ретурна. http://ru.php.net/return В Си это делается за неимением лучшего. Тем более Си это компилятор и сколько там подключается файлов при компиляции не столь важно. А здесь это будет влиять на время исполнения. Да плевать на него. Кто-нибудь и винт себе отформатирует случайно. Использует он include лишний раз, выскочит ему "дубле дефайн", он исправит и все проблемы. |
|||
|
||||
| szz |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 8 Всего: 33 |
Не знал про return, спасибо ))) Там даже так(!):
Да и ненамного времени больше потратится - все, что интерпретатору нужно будет сделать, это пробежать по всем символам и проиндексировать симметричные "{}" - а это всего лишь несколько сот тактов
Добавлено @ 19:43 А вот вопрос вдогонку по return: например у меня есть файл a.php:
и включается он так:
куда вернется? В функцию или функция это вернет? --------------------
|
||||||||||
|
|||||||||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 3 Всего: 71 |
||||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 8 Всего: 36 |
Я обожаю Си. И люблю php. Но у него своя специфика. Зачем тащить из Си в php, то что в нем реализовано лучше. Некоторые даже выводят в пыхе постоянно через printf(). Кошмар. Это вернет include().
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |