X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Область видимости переменной
sc2r2bey
sc2r2bey
Topic Starter сообщение 4.12.2009, 12:40; Ответить: sc2r2bey
Сообщение #1


есть файл config.php
[php]<?php
$error = "ошибка 404. Такой страницы не сущеструет.";
$null = "в данном разделе информация не обнаружена.";
?>[/php]

есть файл functions.php
[php]<?php
// функция загрузки контента
function LoadContent()
{
// получаем данные из адресной строки
$module = trim($_GET['module']);

// защищаем полученные данные от возможных атак
if(!preg_match("/^[a-z0-9]+$/i",$module))
{
$module = '';
}

// если полученные данные пустые задаем отображение главной страницы
if ($module == '')
{
$module = "news";
}

// выбираем модуль
$sql = "SELECT `module` FROM `module` WHERE module='$module'";
$mod = mysql_query("$sql");
if (mysql_num_rows($mod) == 0)
{
echo $null;
}
else
{
$query_mod = mysql_fetch_assoc($mod);
$file = "module/".trim($query_mod['module']).".php";

// если полученный модуль существует, подключаем его
if (is_readable($file)) {
include($file);
} else {
echo $error;
}
}
};

?>[/php]

есть файл index.php
[php]<?php
require_once('include/config.php');
require_once('include/functions.php');
LoadContent();
?>[/php]

и есть файле article.php
[php]<?php

// получаем идентификатор статьи
$id = intval($_GET['id']);

// если идентификатор не задан, задаем начальный
if (!isset($_GET['id']))
{
$id = 1;
};

// выбираем статью
$sql = "SELECT * FROM `article` WHERE id='$id' AND published=1";
$mod = mysql_query("$sql");
if (mysql_num_rows($mod) == 0)
{
echo $error;
}
else
{
// публикуем статью
$query_mod = mysql_fetch_assoc($mod);
echo $query_mod['title'].$query_mod['article'];

}
?>[/php]

как сделать, чтоб переменные $error и $null были видны в функции LoadContent() и отображались при выполнении файла article.php?


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Eugene_hb
Eugene_hb
сообщение 5.12.2009, 5:45; Ответить: Eugene_hb
Сообщение #2


Использовать инструкцию global. Она позволяет работаеть внутри функции с глобальными переменными.
Например, будет так:

[php]function LoadContent()
{
global $error, $null;

// а дальше непосредственно текст самой функции, как у Вас там написано...
}[/php]

(sc2r2bey) *
и отображались при выполнении файла article.php?

Если файл article.php будет подключаться как
[php]require_once('include/article.php');[/php]
то их будет там и так видно (но внутри своих функций, опять же, нужна будет global).
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 6.12.2009, 1:23; Ответить: ZiTosS
Сообщение #3


sc2r2bey, как уже сказал EugeneM переменные будут видны в функции используя оператор расширения видимости переменных (пример выше), а так же можно писать так:
[php]...
echo $GLOBALS['error'];
...
echo $GLOBALS['null'];
...[/php]
Тут главное понимать что конструкции include, include_once дают команду интерпретатору остановиться на данном включении и проанализировать включаемый файл. Затем включить его в проект заменяя конструкцию вставки содержимым включаемого файла(конечно это образно, для понимания).

PHP преобразует сценарий во внутреннее представление, анализируя строки сценария по очереди, пока не доходит до конструкции include. Дойдя до include, PHP прекращает транслировать сценарий и переключается на указанный в include файл. Таким образом из-за подобного поведения транслятора, быстродействие сценария снижается, особенно при большом колличестве включаемых с помощью include файлов. С require таких проблем нет, поскольку файлы с помощью require включаются до выполнения сценария, то есть на момент трансляции файл уже включен в сценарий.

Таким образом, целесообразнее использовать конструкцию require там, где не требуется динамическое включение файлов в сценарий, а конструкцию include использовать только с целью динамического включения файлов в код PHP скрипта.


В твоём примере не видно как файл article.php связан со всеми остальными.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужна помощь по видимости ключевиков сайта
для тех, у кого есть аккаунт на мегаидекс или подобных сервисах
17 karambas 2250 1.2.2023, 9:33
автор: EvilGomel
Открытая тема (нет новых ответов) Вывод запросов в Топ. Повышение видимости сайта в ПС.
Оплата за результат! Топ от 500р./запрос. Видимость от 5000р./мес.
4 Blogir 3700 17.6.2017, 23:47
автор: Blogir
Открытая тема (нет новых ответов) Смена картинки при наведении на ОПРЕДЕЛЕННУЮ область картинки
1 sevenmc 6518 28.8.2011, 19:49
автор: -SEVI-
Открытая тема (нет новых ответов) Замена имени переменной в строке на ее значение
5 RayOfLight 11756 16.9.2010, 17:42
автор: -unnormal-
Открытая тема (нет новых ответов) Продам статьи (Астраханская область)
100% уник, копирайт, недорого.
0 nazar3 1161 19.1.2010, 18:58
автор: nazar3


 



RSS Текстовая версия Сейчас: 29.3.2024, 16:38
Дизайн