HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #14631  
Старый 12.02.2010, 20:23
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

Есть файл const.php
PHP код:
<?php
$msg
['hello'] = 'Hello, '$name;
?>
И есть файл, в котором этот скрипт инклудится в начале, но $name задается после инклуда. Как правильно сделать такое? Всякие быдлокоды типа инклуда после декларирования переменной и вывода текста в самом индексе мне не подходят.
 
Ответить с цитированием

  #14632  
Старый 12.02.2010, 20:36
Failure
Участник форума
Регистрация: 21.09.2008
Сообщений: 148
Провел на форуме:
678893

Репутация: 102
По умолчанию

PHP код:
function hello() {
global 
$name;
$msg['hello'] = 'Hello, '.$name;

инклудь когда угодно, после объявления переменной вызываешь ф-цию, эт первое что пришло в голову =\
 
Ответить с цитированием

  #14633  
Старый 12.02.2010, 21:15
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

И вправду, я вовсе забыл о global thx...
 
Ответить с цитированием

  #14634  
Старый 12.02.2010, 21:56
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

Этот способ работает, но у меня еще по-другому и 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..
 
Ответить с цитированием

  #14635  
Старый 12.02.2010, 22:40
LStr1ke
Постоянный
Регистрация: 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']); 
 
Ответить с цитированием

  #14636  
Старый 12.02.2010, 22:43
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

Цитата:
Сообщение от LStr1ke  
Ну какбе ты в файле constants.php уже назначил значение массиву с пустой переменной $name и дальше ему побоку, что ты назначаешь $name.
Если интересует именно такая реализация, то переменные всегда назначай в самом начале файла.

index.php:
PHP код:
$name $_POST['name']; 

include (
'constants.php'); 
include (
'functions.php'); 


display_message($m['reg_success']); 
Это будет нерационально с точки зрения грамматики кода. Я пишу профессиональную систему на PHP, для себя, целью которой есть изучение именно этого (грамматики). Столкнулся с такой проблемой.
 
Ответить с цитированием

  #14637  
Старый 12.02.2010, 23:00
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

mailbrush
Код:
$messages = array
(
  'reg_success' => '%s, ваша регистрация завершена!',
  'hello'       => 'Hello, %s'
);
К грамматике это не относится.
 
Ответить с цитированием

  #14638  
Старый 12.02.2010, 23:10
Failure
Участник форума
Регистрация: 21.09.2008
Сообщений: 148
Провел на форуме:
678893

Репутация: 102
По умолчанию

не ну на самом деле никак иначе, ты присваиваешь значение $m['reg_success'] (которому нужен $name) а потом уже объявляешь $name, по этому только 2 способа

1) использовать global относительно $name в ф-ции display_message (действительно не профессионально)
2) объявить в правильном порядке, с начало $name, а потом $m['reg_success'] (что я бы и сделал)
 
Ответить с цитированием

  #14639  
Старый 12.02.2010, 23:17
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

Так, пускай будет второй вариант. Но у меня еще не так
PHP код:
...
if(
условие)
{
$name 'Вася';
include(
'constants.php');
display_message($m['reg_success']);
}
... 
Потом в этом коде еще несколько раз выводится display_message, где текст указывается не везде. Разве нельзя никак иначе сделать, ибо 5-10 инклудов того же файла - это вообще ни в какие рамки не влезает.
 
Ответить с цитированием

  #14640  
Старый 12.02.2010, 23:41
Failure
Участник форума
Регистрация: 21.09.2008
Сообщений: 148
Провел на форуме:
678893

Репутация: 102
По умолчанию

сделай класс, в который инклудится constants.php, и получается каждый раз когда тебе надо display_message просто будешь вызывать его из класса, в зависимости от условия меняя или не меняя $name.
Получается у тебя в наличии весь constants.php и удобно вызывать display_messages, меняя $name когда тебе надо
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ