Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сделать пространство имён в функции из скрипта. 
V
    Опции темы
Валерия
Дата 3.12.2008, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: 3
Всего: 8



Есть три файла файла:
1.php
Код
<?
$myvar = "test";
func();
?>


2.php
Код
<?
function func(){
     include("2.php");
}
?>


3.php
Код
<?
echo $myvar;
?>


Нужно что бы запустив 1.php мне вывело значение переменной $myvar, ПРИЧЁМ САМОЕ ГЛАВНОЕ:
1.php и 3.php нельзя трогать.
Т.е мне нужно в функцию func() "запихнуть" все переменные которые находились в пространстве имён того места, откуда она вызывалась.
З.Ы и не надо мне говорить "тебе это не нужно", "не правильная проектировка", "не нужно трусы одевать через голову".
Есть именно такая задача)))

Добавлено через 7 минут и 27 секунд
Всё оказалось банально просто.
в функции нужно всего-лишь сделать extract($GLOBALS);  smile 

Это сообщение отредактировал(а) Валерия - 3.12.2008, 03:10
PM MAIL   Вверх
theworldcreator
Дата 3.12.2008, 03:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



Ну вы бы хотя-бы показали как и где вы файл с функцией подключаете...
А если оставить так, и первый и третий файл нельзя трогать, то func() не будет объявлена в файле 1.php

А если подразумевалось что нибудь такое:
Код

<?
include("2.php");
$myvar = "test";
func();
?>

Код

<?
function func(){
     include("3.php");
}
?>

Код

<?
echo $myvar;
?>


То вам необходимо объявить переменную в функции. Как вариант: global $myvar;
PM MAIL WWW ICQ   Вверх
Валерия
Дата 3.12.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: 3
Всего: 8



theworldcreator, в первом файле забыла сделать инклуд 2.php ))
Почитай название темы.
Мне нужно что бы не только определенная переменная была доступна, что бы всё. Вполне достаточно что бы только для чтения, как в варианте с экстракт)

На самом деле я делаю шаблонизатор на подобии смарти, но в нём не нужно делать assign, пространство в шаблонах и скрипте я хочу что бы было общим smile

Раньше я это решала использованием 

include(compile("shablon.html"));

Причём функция compile возвращала скомпилированный моим шаблонизатором пхп файл, и тогда пространство имён было общим.
Но мне не нравится сама запись инкдуд а в нём функция. Проще что бы выглядело
show("shablon.html")
smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0395 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.