Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 8

Включать все файлы в один или подключать отдельно?

22.02.2010, 15:26. Показов 1851. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток!

Назрел вопрос. Я написал ядро Админ-панели к своему сайту.
Ядро вышло на 40кб. Структура ядра такова:

Если запрос "такойто-1" { действие }
Если запрос "такойто-2" { действие }
Если запрос "такойто-3" { действие }
и т.д...

Вопрос:
*Каждый код действия довольно таки большой, имеет ли смысл размещать каждое действие в отдельном файле или лучше хранить в одном файле?
*Проблемы с ориентированием в коде нет.
*Интересуют исключительно аспекты скорости и другие, которые могут возникнуть.


Заранее спасибо!
С уважением, Vaselisk!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2010, 15:26
Ответы с готовыми решениями:

Возможно ли включать или подключать расширения без вмешательства в php.ini?
Потребовалась библиотека GMP, для математических вычислений и столкнулся с таким вот вопросом. На локальном компе стоит Open Server и по...

Нужно ли к файлу .h подключать все заголовочные файлы, которые понадобятся в .cpp
Например, есть add.h и add.cpp В add.h прототип функции: void func(T); А тип T объявлен в другом заголовочном файле....

Сложить отдельно все положительные элементы этого массива, отдельно все отрицательные
Написать программу, которая сначала вводит десять чисел в одномерный массив, а затем складывает отдельно все положительные элементы этого...

12
Почетный модератор
 Аватар для Humanoid
11557 / 4352 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
22.02.2010, 15:52
Лично я предпочитаю более-менее крупные действия запихивать в отдельный файл. На сколько я помню, PHP в этом случае не будет обращаться к каждому файлу... значит, ему меньше придётся анализировать синтаксис. Да и самому удобнее будет ориентироваться. Лично я делаю примерно так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (isset($_GET['do']))
  $do=$_GET['do'];
else
  $do='';
 
switch($do)
{
  case 'users':
    require './include/admin_users.php';
    break;
  case 'groups':
    require './include/admin_groups.php';
    break;
  default:
    require './include/admin_def.php';
    break;
}
Но тут нужно в веб сервере запрещать доступ к папке include, что бы какой-нибудь редиска не обратился напрямую к одному из этих файлов. Либо защищать другим способом... например, в основном скрипте в самом начале завести константу:
PHP
1
define('MAIN','');
А во всех скриптах, которые не должны запускаться сами по себе, а которые только подключаются можно проверять эту константу:
PHP
1
2
if (!defined('MAIN')) 
  die('Пшёл вон, морда хакерская!');
0
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 8
22.02.2010, 18:15  [ТС]
Большое спасибо!

Я выслушал Ваше мнение и считаю Вы правы.
Но т.к. мои знания довольно неглубоки, поэтому решил удостовериться, что нет "подводных камней".
0
 Аватар для boong
154 / 124 / 11
Регистрация: 11.01.2010
Сообщений: 434
23.02.2010, 01:07
Цитата Сообщение от Humanoid Посмотреть сообщение
if (isset($_GET['do']))
$do=$_GET['do'];
else
$do='';
switch($do)
{
case 'users':
require './include/admin_users.php';
break;
case 'groups':
require './include/admin_groups.php';
break;
default:
require './include/admin_def.php';
break;
}
Humanoid согласен я тож так делаю
0
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 8
23.02.2010, 01:26  [ТС]
*Не является ошибкой все время подключаться к БД, независимо есть уже подключение или нет?
*Или лучше проверять подключен уже скрипт к БД или нет?

Из того, что я знаю, после выполнения запроса связь с БД не теряется,
если самостоятельно не закрыть. Закрытие происходит после выполнения скрипта. От сюда - закрывать подключение, в моем случае, не имеет смысла, а значит подключаться в самом начале скрипта до выполнения какого либо действия - тоже НЕ имеет смысла. Я правильно рассуждаю?[i]

Если запрос "такойто-1" { подключение; действие }
Если запрос "такойто-2" { подключение; действие }
Если запрос "такойто-3" { подключение; действие }
0
 Аватар для boong
154 / 124 / 11
Регистрация: 11.01.2010
Сообщений: 434
23.02.2010, 01:31
Вот посмоти Как правильно соединятся MySQL
0
Почетный модератор
 Аватар для Humanoid
11557 / 4352 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
23.02.2010, 11:03
Цитата Сообщение от vaselisk Посмотреть сообщение
Из того, что я знаю, после выполнения запроса связь с БД не теряется,
если самостоятельно не закрыть.
Если использовать mysql_connect, то оно само закрывается, когда скрипт завершён. А если использовать mysql_pconnect, то соединение остаётся висеть... это специально сделано для того, что бы по нескольку раз не подключаться к серверу MySQL. И самому тут не надо думать об этом... всё делается автоматически. Если подключение к этой базе с этим логином и паролем уже есть, то PHP сам поймёт, что не надо создавать новое, а надо использовать существующее подключение.
0
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 8
23.02.2010, 12:21  [ТС]
boong, спасибо! Обязательно почитаю!

Humanoid, а если подключение все время к одной и той же БД, но с разными пользователями?
Сначала, например, у меня идет выборка всех значений -используется пользователь для чтения БД
Потом, у меня обрабатываются значения и вносятся изменения или новые - пользователь для записи в БД. Как поступить?
0
Почетный модератор
 Аватар для Humanoid
11557 / 4352 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
23.02.2010, 12:35
Цитата Сообщение от vaselisk Посмотреть сообщение
а если подключение все время к одной и той же БД, но с разными пользователями?
Для каждого пользователя будет создаваться своё подключение. Если у тебя два пользователя, то просто будет висеть два подключения и каждое из них будет ждать своей очереди. Когда в очередной раз через mysql_pconnect будет подключаться пользователь для чтения, то будет задействоваться первое подключения... когда будет подключаться пользователь для записи, то будет задейтвоваться второе подключение.
0
 Аватар для SunDrop
390 / 229 / 11
Регистрация: 09.12.2009
Сообщений: 668
23.02.2010, 16:05
Цитата Сообщение от Humanoid Посмотреть сообщение
На сколько я помню, PHP в этом случае не будет обращаться к каждому файлу...
В целом ты прав, но это касается директивы include!
Директива require подключается всегда.
0
Почетный модератор
 Аватар для Humanoid
11557 / 4352 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
23.02.2010, 17:07
SunDrop, хм... разве? Вроде, в справке сказано, что разница между include и require только в том, что include в случае, если файла не существует, сделает warning и продолжит работу, а require выдаст error и остановится. Не знаю... надо будет как-нибудь проверить.
1
 Аватар для SunDrop
390 / 229 / 11
Регистрация: 09.12.2009
Сообщений: 668
23.02.2010, 18:42
Humanoid
Конструкция require позволяет включать файлы в сценарий PHP до исполнения сценария PHP.

При запуске (именно при запуске, а не при исполнении!) программы интерпретатор просто заменит инструкцию на содержимое файла имя_файла (этот файл может также содержать сценарий на PHP, обрамленный, как обычно, тэгами <? и ?>). Причем сделает он это непосредственно перед запуском программы.

В отличие от конструкции require конструкция include позволяет включать файлы в код PHP скрипта во время выполнения сценария.

PHP преобразует сценарий во внутреннее представление, анализируя строки сценария по очереди, пока не доходит до конструкции include. Дойдя до include, PHP прекращает транслировать сценарий и переключается на указанный в include файл. Таким образом из-за подобного поведения транслятора, быстродействие сценария снижается, особенно при большом колличестве включаемых с помощью include файлов. С require таких проблем нет, поскольку файлы с помощью require включаются до выполнения сценария, то есть на момент трансляции файл уже включен в сценарий.
2
0 / 0 / 0
Регистрация: 22.02.2010
Сообщений: 8
23.02.2010, 20:31  [ТС]
Уважаемые!
Подскажите, пожалуйста, литературу, с помощью которой, не трудно будет освоить ООП и все что связано с современной деятельностью PHP-программистов. Очень хочу работать по этой профессии.
При этом хорошо разбираюсь в графике и неплохо в верстке, что может помочь в изучении материала.
Знаком с XTML, CSS, PHP(база), MySQL(база), Photoshop и др. граф.редакторами...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.02.2010, 20:31
Помогаю со студенческими работами здесь

Сервер получает файлы от клиента, склеивает все полученные файлы в один большой. Протокол взаимодействия UDP
Дали задание, надеюсь на вашу помощь или быть может есть какие-то исходники, буду рад любой помощи. Заранее спасибо. Задание: Реализовать...

Сложить отдельно все положительные и отрицательные элементы массива отдельно
Кому не лень помогите пожалуйста сделать эти задачи. Хотя бы несколько. Буду очень признателен. 1) Напишите программу, которая сначала...

Вставка картинок во все найденные Excel-файлы, попутно объединяя все PDF в один
В общем, в чем проблема. Как сделать, чтоб при запуске программы открывалось окно, в нем выбиралась определенная пака и определенная...

Как сохранить все wma файлы из папки в один, что бы потом сразу все подгружать?
как сохранить все wma файлы из папки в один, что бы потом сразу все подгружать в файл?

Поместить все компоненты приложения в один файл или скрыть во избежание модификации или замены
Во время работы накопилось огромное количество jpg и dll файлов в папке debug. Как это всё запихать в один файл или скрыть, чтоб не было...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru