2016-12-28 10 views
1

Мои файлы PhP содержат некоторые длинные строковые константы, и я пытаюсь их исключить. Поэтому я создал «my_string_constants.php» и использовал include в header.php. Пока это прекрасно работает.Включить php-файл, содержащий другой файл php?

Теперь другой файл, page.php также требует строка констант иheader.php. Нижеприведенная схема пытается разъяснить эти зависимости.

enter image description here

строковые константы, теперь, кажется, доступны в моем только заголовок, а не остальной части моей страницы. Я попытался разрешить это, добавив global ... к каждой строковой константе в string_constants.php. Это разрешило ошибку «Неизвестная переменная», но мои строковые константы по-прежнему недоступны для большей части содержимого страницы.

Каков правильный способ заставить это работать?

UPDATE

Проблема была решена. Я должен был использовать define(myString вместо $myString = .... Таким образом, мне нужен только один include в header.php, а константы будут доступны и для page.php.

Спасибо, миллион, вы, ребята, здорово.

+0

Ваша установка неясна. Вы включаете или требуете файл один раз в верхнем большинстве файлов, если вам нужно сделать это явным образом. 'page.php' и' header.php' не могут _both_ быть самым большим файлом, вызванным в запросе. Если вам действительно нужно включить файл в оба, используйте 'ìnclude_once()' или 'require_once()'. – arkascha

+2

if 'page.php' нуждается в' header' и 'constants', но' header' уже имеет 'константы' ... тогда' page.php' нужен только 'header' –

+0

@mistermartin Я пробовал это, но он вызывает ошибку : 'Примечание: неопределенная переменная: re_afornone_ov в C: \ xampp \ htdocs \ t \ wp-content \ themes \ c \ home_page.php' Строковые константы доступны для 'header.php', но не' homepage.php', но они оба нуждаются в них. – RubenGeert

ответ

3

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

Для констант, вам не нужно объявлять их как глобальные, и они определяются следующим образом:

define('MY_CONSTANT', 'Value'); 

Мне кажется, что файл констант действует как ваш широкий файл конфигурации сайта, так что для меня , имеет смысл иметь это на каждой странице, независимо от того, используется ли заголовок или нет. Для этой цели я обычно создавал файл начальной загрузки.

bootstrap.php:

<?php 
require_once(__DIR__ . '/constants.php'); 
require_once(__DIR__ . '/database.php'); 
require_once(__DIR__ . '/session.php'); 

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

page.php:

<?php 
require_once(__DIR__ . '/bootstrap/bootstrap.php'); 
require_once(__DIR__ . '/header.php'); 
?> 
<h1>Page Title</h1> 

В header.php, так как он требует, чтобы эти константы, вы можете справиться с этим двумя способами, либо проверить, что определены константы (значение, самозагрузки был включен первый) или просто используйте другой require_once, чтобы убедиться, что файл был загружен.

if (!defined('MY_CONSTANT')) exit('Bootstrap failure'); 

или

require_once(__DIR__ . '/bootstrap/constants.php'); 
+0

Спасибо! Мне нужно проконсультироваться с этим руководством пару минут. – RubenGeert

+0

Из комментария видно, что он также использует wordpress ... если это имеет какое-то значение для того, как вещи уже * организованы. –

+0

@mister martin: Да, это действительно Wordpress. – RubenGeert

0

Входящие во многие каталоги или «файлы» с глубоким учетом могут действительно вызывать проблемы позже, когда вы пытаетесь отладить. Как правило, я стараюсь идти только на один уровень в отношении включения файлов. То есть Создайте папку с именами include и поместите там все. Если есть файл, который необходимо несколько переменных, функций и т.д., а затем включить их в необходимых страниц в тот момент делать несколько включает в себя примерно так:

<?php 
include("includes/header.php"); 
includes("includes/functions.php"); 
?> 

Есть и другие вопросы, в отношении к тому, мультипликатор включает в себя, как если у вас есть сеансы или печенье некоторой ЛАМПА стека потребует объявлять

session_start(); 

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

Итак, чтобы ответить на ваш вопрос, я считаю, что самым простым решением было бы реорганизовать ваш сайт или скрипт.

0

в заголовочной странице ontop u написать
Включить 'header.php';

и в header.php вы пишете include 'my_string_constants.php';

поэтому в этом случае page.php вызывает заголовок, а в заголовке вызывается my_string_constants ... это то, что вы имеете в виду?

+0

Это ответ? Это не похоже на одно, оно похоже на комментарий .... –