Вывод строки данных из включения - PullRequest
1 голос
/ 20 марта 2012

Я хочу повторить строку текста, специфичного для страницы.У меня нет проблем с этим, когда тег находится на странице, но у меня возникают проблемы, когда он размещен внутри включения.Пример:

index.php

<?php

$StringData1 = "String of page specific text on page echoes.";
include("IncludeHeader.php");

?>
<html>

<head></head>
<body>

<p>Start Echo Test</p>
<p>Echo Test For StringData1:  <?php echo "$StringData1"; ?></p>
<p><?php include("IncludeFile.php");?></p>
<p>Stop Echo Test</p>

</body>
</html>

IncludeHeader.php

// Many Global Variables called from various CSV Files.  To be exact $StrindData2 is actually $StringData2[1] from an array.  The array is of a row of CSV fields
$StringData2 = "String of page specific text in include won't echo.";

IncludeFile.php

Echo Test For Included StringData2:  <?php echo "$StringData2"; ?>

при запуске index.phpвывод:

<html>

<head></head>
<body>

<p>Start Echo Test</p>
<p>Echo Test For StringData1:  String of page specific text on page echoes.</p>
<p>Echo Test For Included StringData2:  </p>
<p>Stop Echo Test</p>

</body>
</html>

Из этого примера, как я могу получить $ StringData2 для эха из включения?

Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

doc заявляет:

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

Также, что:

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

Был ли ваш пример сокращен или это ваш точный код? Ваш оригинальный пример, как показано, должен работать нормально.

Ваш обновленный пример все еще должен работать.

Поцарапайте мое последнее редактирование. Я думаю, вам действительно нужно придумать сокращенный пример, который воспроизводит то же поведение.

0 голосов
/ 20 марта 2012

Попробуйте этот код:

IncludeFile.php

  Echo "Test for Included StringData2:  $StringData2"; 
...