Какова наилучшая практика для включения файлов PHP?

Какова наилучшая практика для включения файлов PHP?

Лучше ли включать файл include.php который включает в себя все файлы PHP проекта? Или включить его в те файлы, которые в них нуждаются

Прямо сейчас, мой проект имеет несколько файлов include в моем файле index.php . Включает ли все мои php-файлы в index.php менее эффективные?

И, наконец, где включить сессионный файл проверки PHP? во всех файлах PHP?

Solutions Collecting From Web of "Какова наилучшая практика для включения файлов PHP?"

EDIT 2016

Ну, 5 лет с тех пор, как я ответил. Я все еще жив. Много изменилось.

Теперь я использую автозагрузчики для включения моих файлов. Вот официальная информация для автозагрузчиков с примерами.

В принципе, идея состоит в том, чтобы иметь правильную структуру папок (например, стандарты PSR-4) и иметь класс в каждом файле. Таким образом, вы можете использовать автозагрузчики, и PHP автоматически загрузит ваши файлы.

СТАРЫЙ ОТВЕТ

Обычно у меня есть файл конфигурации, например:

 define(root, $_SERVER['DOCUMENT_ROOT']); .... // other variables that are used a lot include (root . '/class/database.php'); .... // other includes that are mostly called from each file, like a db class, or user class, functions etc etc... if (defined('development')) { // turn error reporting on } else { // turn it off } etc etc... You got the point of config. 

И я включаю config.php в каждый файл. Я забыл, как это сделать прямо сейчас, но apache может автоматически включить вас. Поэтому вы можете сказать apache, чтобы включить ваш файл конфигурации по умолчанию.

Затем у меня есть классы контроллеров, которые называют представления. В каждой функции я вызываю представление.

someController.php

 function index() { include root . '/views/view_index.php'; } 

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

view_index.php

 <?include root . '/view/shared/header.php';?> <div class="bla bla bla">bla bla bla</div> <?include root . '/view/shared/footer.php';?> 

Я всегда использую include в этой структуре, а не include_once поскольку последний требует дополнительной проверки. Я имею в виду, так как я уверен, что я включаю файлы только один раз, мне не нужно использовать include_once . Таким образом, вы также знаете, куда включить. Например, вы знаете, что важные файлы, такие как db.php или functions.php, находятся в файле config.php. Или вы знаете, что включенные представления находятся в контроллерах. Это очень полезно для меня, я надеюсь, что это тоже поможет.

Использование файла include.php – это очень хорошая практика, так как это очень полезно при замене включенных файлов в больших проектах. Если проект мал, то включение отдельных файлов не является проблемой. Но становится проблемой управлять ими по мере роста проекта.
Для файла проверки сеанса лучше присоединить их отдельно, так как требование проверки сеанса на разных страницах может отличаться.
Включение файлов по отдельности или включение их всех в один файл, а затем включает в себя то, что имеет большое значение для производительности. Как в конечном итоге все файлы будут включены. Управлять ими становится проще, если для их обработки используется один файл.

Я не предполагаю, что вы используете объектно-ориентированное программирование, но в случае, если вы здесь, это может быть хорошим ответом.

В php вы можете определить функцию, называемую автозагрузчиком, если вы попытаетесь создать объект класса, который не был определен, вызывается автозагрузчик. Затем вы можете использовать имя класса, чтобы выяснить, где хранится файл, содержащий этот класс, чтобы включить его в последний момент. Вот пример.

 <?php function on_load($class) { if(file_exists(require_once('classes/'.$class.'.php'))) { require_once('classes/'.$class.'.php'); } else { throw new Exception('Class not found: '.$class.' in classes/'); } } spl_autoload_register('on_load'); // tell php to call your on_load function if the class was not defined 

Если вы работаете над большим проектом, вы можете захотеть сгруппировать свои файлы, как это

 /classes/database/MySQL.php /classes/database/PDO.php // I'm just listing random stuff /classes/Core.php // Whatever /classes/datastructure/HashMap.php 

Затем вы можете использовать специальное соглашение об именах, чтобы найти правильный каталог

 class Database_MySQL{} // look in <root_dir>/database/ for MySQL.php class Core // look in <root_dir>/ for Core.php class Database_Driver_Adapter_Useless_MysqlAdapterThingy {} // look in <root_dir>/Database/Driver/... blabla 

Или вы можете использовать способ php 5.3 и определить свои классы следующим образом

 <?php namespace database\driver\adapter\useless; use database\driver\adapter\MysqlAdapter; // Now you have to tell PHP which version of MysqlAdapter class you want to use, even if there is just one class MysqlAdapterThingy extends MysqlAdapter {} 

Теперь вам нужно использовать ключевое слово «use» в каждом файле, который вам нужен. Самое приятное, что пространство имен автоматически добавляется к имени класса для вашей функции автозагрузки, поэтому вы можете сделать что-то вроде этого

 function on_load($class) { require_once('root/' . str_replace('\\', '/' $class)); } 

Если вы хотите узнать больше, попробуйте googeling PHP-загрузку, есть тонны информации по этому вопросу. Но затем снова. Из формата вашего вопроса я не предполагаю, что вы используете ООП, поэтому этот ответ предназначен только для людей, которые нашли этот вопрос в Google.


редактировать

Я также хотел бы добавить следующее:

  // Only include the file once even if you place this statement multiple times require_once('bla.php'); include_once('bla.php'); require('bla.php'); // Error if file doesn't exist, php will not continue inlcude('bla.php'); // Warning if file doesn't exist, but php will continue 
  • Использование include или require без _once означает, что файл будет включаться каждый раз, когда выполняется инструкция
  • Используйте include для шаблонов или созданных пользователем файлов, используйте require_once для классов

Просто подумайте легко и подумайте о загрузке как можно меньше и не включите что-то ненужное.

Итак, для ваших файлов PHP. если вы включаете одни и те же файлы php на разные страницы, просто создайте 1 файл PHP с этими файлами в нем. Если вы используете PHP-файл только на 1 странице или 2, просто включите их отдельно.

Надеюсь, я помог вам с этим;)

Включите файлы самостоятельно, используйте функцию require_once() вместо include , так как require_once разрешает только одно включение файла …