ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

12.02.2010, 20:23
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Есть файл const.php
PHP код:
<?php
$msg['hello'] = 'Hello, '. $name;
?>
И есть файл, в котором этот скрипт инклудится в начале, но $name задается после инклуда. Как правильно сделать такое? Всякие быдлокоды типа инклуда после декларирования переменной и вывода текста в самом индексе мне не подходят.
|
|
|

12.02.2010, 20:36
|
|
Участник форума
Регистрация: 21.09.2008
Сообщений: 148
Провел на форуме: 678893
Репутация:
102
|
|
PHP код:
function hello() {
global $name;
$msg['hello'] = 'Hello, '.$name;
}
инклудь когда угодно, после объявления переменной вызываешь ф-цию, эт первое что пришло в голову =\
|
|
|

12.02.2010, 21:15
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
И вправду, я вовсе забыл о global  thx...
|
|
|

12.02.2010, 21:56
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Этот способ работает, но у меня еще по-другому и global не подойдет 
Есть три файла.
1. (index.php) С этого вызывается функция.
2. (functions.php) Здесь сама функция.
3. (constants.php) А здесь текст сообщения.
Из файла 1 вызывается функция в файле 2, переменная с текстом которой есть в файле 3.
Тоесть так:
index.php
PHP код:
include ('constants.php');
include ('functions.php');
$name = $_POST['name'];
display_message($m['reg_success']);
functions.php
PHP код:
function display_message($message)
{
echo '<center><div class="msg"><br>' . $message .
'<br><br></div></center><br />';
}
constants.php
PHP код:
$m['reg_success'] = $name . ', ваша регистрация завершена!';
Как поступать? Как сделать структуру?
Последний раз редактировалось mailbrush; 12.02.2010 в 22:00..
|
|
|

12.02.2010, 22:40
|
|
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
Провел на форуме: 1455812
Репутация:
150
|
|
Ну какбе ты в файле constants.php уже назначил значение массиву с пустой переменной $name и дальше ему побоку, что ты назначаешь $name.
Если интересует именно такая реализация, то переменные всегда назначай в самом начале файла.
index.php:
PHP код:
$name = $_POST['name'];
include ('constants.php');
include ('functions.php');
display_message($m['reg_success']);
|
|
|

12.02.2010, 22:43
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Сообщение от LStr1ke
Ну какбе ты в файле constants.php уже назначил значение массиву с пустой переменной $name и дальше ему побоку, что ты назначаешь $name.
Если интересует именно такая реализация, то переменные всегда назначай в самом начале файла.
index.php:
PHP код:
$name = $_POST['name'];
include ('constants.php');
include ('functions.php');
display_message($m['reg_success']);
Это будет нерационально с точки зрения грамматики кода. Я пишу профессиональную систему на PHP, для себя, целью которой есть изучение именно этого (грамматики). Столкнулся с такой проблемой.
|
|
|

12.02.2010, 23:00
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
mailbrush
Код:
$messages = array
(
'reg_success' => '%s, ваша регистрация завершена!',
'hello' => 'Hello, %s'
);
К грамматике это не относится.
|
|
|

12.02.2010, 23:10
|
|
Участник форума
Регистрация: 21.09.2008
Сообщений: 148
Провел на форуме: 678893
Репутация:
102
|
|
не ну на самом деле никак иначе, ты присваиваешь значение $m['reg_success'] (которому нужен $name) а потом уже объявляешь $name, по этому только 2 способа
1) использовать global относительно $name в ф-ции display_message (действительно не профессионально)
2) объявить в правильном порядке, с начало $name, а потом $m['reg_success'] (что я бы и сделал)
|
|
|

12.02.2010, 23:17
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Так, пускай будет второй вариант. Но у меня еще не так
PHP код:
...
if(условие)
{
$name = 'Вася';
include('constants.php');
display_message($m['reg_success']);
}
...
Потом в этом коде еще несколько раз выводится display_message, где текст указывается не везде. Разве нельзя никак иначе сделать, ибо 5-10 инклудов того же файла - это вообще ни в какие рамки не влезает.
|
|
|

12.02.2010, 23:41
|
|
Участник форума
Регистрация: 21.09.2008
Сообщений: 148
Провел на форуме: 678893
Репутация:
102
|
|
сделай класс, в который инклудится constants.php, и получается каждый раз когда тебе надо display_message просто будешь вызывать его из класса, в зависимости от условия меняя или не меняя $name.
Получается у тебя в наличии весь constants.php и удобно вызывать display_messages, меняя $name когда тебе надо
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|