Подскажите какой командой лучше подключать дополнительный файл с функциями Код (Text): require get_template_directory() . '/jurvrn/custom.php'; или Код (Text): require_once get_template_directory() . '/jurvrn/custom.php'; В чем их главное отличие? по быстродействию или ...
require - подходит для подлючения шаблонов: можно подключать множество раз require_once - нужен для подлючения фаилов с функциями, классами, настройками. т.е. подключаются только один раз и если подключить уже подключенный файл, он не подключится
Да, смотри: если у тебя есть файл где объявлены какие-нибудь функции, то подключай его через require_once. Так как возможно эти функции понадобяться в разных местах и на разных страницах. Так вот чтобы php не ругался на то ты объявляешь функцию, а она уже есть, используй это. Для шаблонов, где нет ни объявлений функций, классов, итд используй require
Нахрена стили подключать в PHP? Имеется в виду, когда отделяется код вывода, выносится в отдельные файлы, получаются так называемые шаблоны
@mkramer@MouseZver@twim32, у меня wordpress есть основной стиль и стиль для мобильных устройств. Подключаю их через php
@jurvrn.ru, но не через require, наверное, а через wp_enqueue_style какой-нибудь. Это отдельный разговор
@mkramer, да стиль подключаю через wp_enqueue_style и там ещё шрифт "сидит" PHP: if ( !function_exists( 'child_theme_configurator_css' ) ): function child_theme_configurator_css() { wp_enqueue_style( 'chld_thm_cfg_separate', trailingslashit( get_stylesheet_directory_uri() ) . 'style-mobile.css', array( 'chld_thm_cfg_parent','easywp-maincss','font-awesome' ) ); } endif; add_action( 'wp_enqueue_scripts', 'child_theme_configurator_css', 20 ); а вопрос у меня был именно по php подключению - какой командой правильно подключать? в зависимости от содержания функций? PHP: require get_template_directory() . '/admin/template-tags.php'; require_once get_template_directory() . '/admin/custom.php';
А я привык include (_once) пользоваться. Не люблю слово "требуется") The difference between include and require arises when the file being included cannot be found: include will emit a warning (E_WARNING) and the script will continue, whereas require will emit a fatal error (E_COMPILE_ERROR) and halt the script. If the file being included is critical to the rest of the script running correctly then you need to use require.
@acso, у этих команд разное назначение. require значительно лучше подходит для «обеспечения целостности». Конечно, когда все разложено по местам, особой разницы нет, но последняя дает гораздо больше спокойствия на случай возникновения всяких «неожиданностей»
Господа, знаю Ну вот такие у меня бздыки) Да, не люблю. Но это не мешает мне писать логику. Тем более я знаю, где у меня что лежит. --- Добавлено --- PHP: $fname = _PAGES_ . "{$par}.php"; if (!file_exists($fname)) $fname = _PAGES_ . "404.php"; include_once($fname);
@acso , @Valick, @miketomlin, запутали... мне для подключения файла дополнительных функций php что лучше подойдет? require get_template_directory() require_once get_template_directory()
@jurvrn.ru Да всё уже расписали. Есть назначение команд, есть предпочтения. require даст ошибку при отсутствии файла и конец скрипта, include выдаст предупреждение и выполнение скрипта продолжится. _once подразумевает, что этот файл будет включен в код только один раз.
В теории понятно. По include тоже понял иногда это лучше. С одной стороны мне даже лучше если выполнение кода остановиться, так как в подключаемом файле те функции, которые я "проверяю". Вопрос теперь - once или каждый раз? У меня wordpress
"Наша песня хороша! Начинай сначала!" Для лучшего понимания предлагаю разобраться что всё это значит на английском языке: include - вложить (Если фаила по указанному пути нет, просто будет варнинг) require - требовать (Если файла нет, страница полностью не отобразиться) once - единожды, один раз Примеры: 1. require Применяется для вложения php фаилов, без чего страница работать не сможет. Допустим, ты в отдельном фаиле сделал шаблон потрясного меню и хочешь залепить это на сайт, не только сверху, но и снизу. Вопрос: "должна ли страница отобразиться, если там не будет меню?" Если нет, пишем require внизу и вверху нашего шаблона. 2. require_once Допустим, ты написал библиотеку с функциями в одном фаиле. Так же ты написал пару модулей, которые используют эти самые функции. Твои модули ТРЕБУЮТ библиотеку и ты написал require 'my_lib.php' в каждом из них. Если у тебя модули будут на разных страницах, то никаких проблем. А вот если ты поместишь оба на одну страницу, то первый модуль объявит функции из твоей библиотеки, а второй будет ругаться на то, что он не может объявить такие функции, ведь они уже были объявлены. Для этого используется require_once. Если библиотека была подключена где-то в коде, то второй раз подключать ее не надо. 3. include Допустим, создал ты новую страницу. И в шапке, и в боковом меню и самом конце страницы, ты хочешь вложить какой-нибудь блок. Пусть это будет смаилик с текстом "Привет, user!". Вопрос: должна ли отображаться страница, если вдруг ты нечаянно удалишь этот файл? Думаю что тут ничего критичного нет, поэтому мы можем инклюдить. 4. include_once Как раз твой пример. Если фаила со стилями нет, это критично? Если это не самый главный фаил где написано все-все-все, то наверное нет. А нужно ли объявлять стили несколько раз? Нет. Достаточно одного. Поэтому используем include_once Итоги: Просто задай себе 2 вопрса: - должна ли страница отображаться если файл не будет найден? Если да, то include. Если нет, то require. - должен ли код повторяться на странице? Если это HTML, простой текст, картинки, и т.д, - тогда просто include или require Если это библиотеки функций, классов, стилей, и т.д. - нет смысла их подключать несколько раз на одну страницу. Поэтому используем include_once/require_once. --------------------------------------------- Изучай английский. Это поможет тебе понимать любой язык программирования (не прям сразу всё, но очень многое). И не переводи с английского на русский, а пытайся мыслить как коренной носитель языка. Не всегда можно найти аналоги слова в другом языке.
Все понял, все понял, но на практике - в подключаемом файле функции по объявлению и программированию виджетов. Они будут на каждой странице, но каждый в своей области, которая для всех страниц одинаковая. Это области тоже программируются в дополнительном файле функций php. Каких то переменных там нет. Значит без once ?
Не понял. Страница может отображаться без виджета? Да. - include Если в виджетах есть функции, которые описаны в фаиле "mylib.php", то в виджетах require_once 'mylib.php'
Да понял про разницу включить и потребовать) Once или нет? В этом теперь вопрос --- Добавлено --- В виджетах функций нет, они сами функции.
Я тебе написал подробнейшее описание, еще раз процитировал ключевой момент и можно сказать дал ответ, а ты продолжаешь меня мучить. Не по-христиански это... А ты сам-то что думаешь по этому поводу?
Не понимаю разницы между "описать" функцию и "есть" функция. Занимая зону под виджет на странице и объявляя новые виджеты - я что делаю? Ведь в wordpress основные функции записаны в ядро. А создавая конкретный новый виджет я просто использую заложенный в wordpress инструментарий. И вот этот новый виджет я присоединяюсь к основному файлу функций, чтобы его доводить до ума через дополнительный файл и не лазить в основной файл. --- Добавлено --- PS я не программист, но красоту профессионального кода понимаю. И на форум пришёл для более серьезной вещи - базы событий для каждого пользователя по датам (плпнировщик событий). PS. Буду использовать once, сейчас так сделано и ошибок нет. Зона виджетов одинакова для всех страниц (пока).