Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Видимость переменных
 
 автор: beng2   (19.05.2006 в 19:14)   письмо автору
 
 

Имеется:

php-файл:

$a = "a";
$b = "b";
// и т. д.

paste_file("file.html");

function paste_file($file_name)
{
    include($file_name);
}


file.html:

<ul>
    <li>a: <?=$a?></li>
    <li>b: <?=$b?></li>
    <!-- И т. д. -->
</ul>

Можно ли определить для функции paste_file все используемые в файле file.html переменный как глобальные, чтобы инструкции <?=$Имя_переменной?> выполнялись успешно?

   
 
 автор: mmaks   (19.05.2006 в 19:21)   письмо автору
 
   для: beng2   (19.05.2006 в 19:14)
 

Может лучше использовать require всместо include....

   
 
 автор: beng2   (19.05.2006 в 20:34)   письмо автору
 
   для: mmaks   (19.05.2006 в 19:21)
 

Это не решает моей проблемы
А почему require вместо include?

   
 
 автор: ec_stasis   (19.05.2006 в 20:47)   письмо автору
 
   для: beng2   (19.05.2006 в 20:34)
 


function paste_file($file_name)
{
    global $a, $b;
    include($file_name);

   
 
 автор: beng2   (19.05.2006 в 21:09)   письмо автору
 
   для: ec_stasis   (19.05.2006 в 20:47)
 

Этот вариант не подходит, т. к. заранее не известно, какие переменные будут использоваться в файле

   
 
 автор: ec_stasis   (19.05.2006 в 21:26)   письмо автору
 
   для: beng2   (19.05.2006 в 21:09)
 

тогда передавать эти переменные функции как аргументы. Если количество переменных неизвестно, тогда передавать массив.

   
 
 автор: beng2   (19.05.2006 в 21:36)   письмо автору
 
   для: ec_stasis   (19.05.2006 в 21:26)
 

Количество переменных заранее не известно (см. первый пост). Как может решить эту проблему передача массива я не понял.

   
 
 автор: ec_stasis   (19.05.2006 в 22:13)   письмо автору
 
   для: beng2   (19.05.2006 в 21:36)
 

когда объявляешь функцию, не надо заботиться, сколько у нее должно быть аргументов (всегда будет один). а эти переменные записывать в массив.

   
 
 автор: beng2   (19.05.2006 в 22:27)   письмо автору
 
   для: ec_stasis   (19.05.2006 в 22:13)
 

Можно пример кода? Как я понимаю, необходимо изменить текст и вызов функции paste_file, при этом инструкции <?=$имя_переменной?> в файле file.html будут корректно обработаны.

   
 
 автор: Artem S.   (19.05.2006 в 22:47)   письмо автору
 
   для: beng2   (19.05.2006 в 22:27)
 

Я пишу обычно так

<?php
$vars
['a'] = "a";
$vars['b'] = "b";
// и т. д.

paste_file("file.php"$vars);

function 
paste_file($file_name$vars)
{
    include(
$file_name);

?>

   
 
 автор: beng2   (20.05.2006 в 00:28)   письмо автору
 
   для: Artem S.   (19.05.2006 в 22:47)
 

.. и после подключения файла file.html (см. первый пост)

<ul>
    <li>a: <?=$a?></li>
    <li>b: <?=$b?></li>
    <!-- И т. д. -->
</ul>

мы получим "Undefined variable"

   
 
 автор: ec_stasis   (19.05.2006 в 23:22)   письмо автору
 
   для: beng2   (19.05.2006 в 22:27)
 

чтобы они были корректно обработаны, надо еще воспользоваться ф-ией extract(), т.е.:

<?php
$vars
['a'] = "a";
$vars['b'] = "b";
// и т. д.

paste_file("file.php"$vars);

function 
paste_file($file_name$vars)
{
    
extract($vars);
    include(
$file_name);
}
?> 

   
 
 автор: beng2   (20.05.2006 в 00:29)   письмо автору
 
   для: ec_stasis   (19.05.2006 в 23:22)
 

Спасибо

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования