Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Редекларация функции

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Редекларация функции
for
Отправлено: 22 Марта, 2014 - 21:12:51
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Всех приветствую форумчане, вообще сразу к вопросу. Есть index.php который с помощью свитча цепляет страницы и загружает их в блоке content.

PHP:
скопировать код в буфер обмена
  1. <!doctype html>
  2.  
  3. <head>
  4.     <title>Test</title>
  5.     <meta charset="utf-8">
  6.     <link href="css/style.css" rel="stylesheet" type="text/css">
  7. </head>
  8.  
  9. <body>
  10.         <?PHP
  11.     include "data.inc.php";
  12.     include "lib.inc.php";
  13.     include "bug.inc.php";
  14.     ?>
  15.     <div id="wrapper">
  16.  
  17.                 <div id="ip">
  18.                 <?PHP include "ip.inc.php"; ?>
  19.                 </div>
  20.         <div id="header">
  21.                 <?PHP require "header.inc.php"; ?>
  22.         </div>
  23.                 <div id="button">
  24.                 <?PHP include "button.inc.php"; ?>
  25.                 </div>
  26.         <div id="sidebarR">
  27.             <?PHP include "menuR.inc.php"; ?>
  28.                 </div>
  29.         <div id="content">
  30.             <?PHP
  31.                         //Проверяем пришли ли данные методом GET.
  32.             if (isset($_GET['id']) and !empty($_GET['id'])) {
  33.                                
  34.                                 //Фильтруем полученные значения.
  35.                 $id = clearData($_GET['id']);
  36.                                
  37.                
  38.                                 //Подключаем страницы в одном фрейме.
  39.                 if (isset($id)) {
  40.                     switch ($id) {
  41.                         case "search" :
  42.                             include "search.php"; break;
  43.                         case "article1" :
  44.                             include "article.php"; break;
  45.                         case "md5" :
  46.                             include "md5.php"; break;
  47.                                                 case "blog" :
  48.                                                         include "blogger.php"; break;
  49.                         default: include "index.php";
  50.                     }
  51.                 }
  52.             }
  53.                        
  54.             ?>
  55.         </div>
  56.         <div class="clear"></div>
  57.         <div id="footer">
  58.             <div id="leftCnt">Счетчик Rambler</div>
  59.             <div id="rightCnt">Правильный CSS</div>
  60.             <div id="phpVersion">
  61.                                 <?PHP include "footer.inc.php"; ?>
  62.             </div>
  63.         </div>
  64.     </div>
  65.  
  66. </body>
  67. </html>


К нему цепляется php страничка у которой формируется ссылка на удаление в цикле, так сказать на лету, передается все это дело методом GET.

PHP:
скопировать код в буфер обмена
  1. //Выводим содержимое с помощью цикла
  2. foreach($array as $result) {
  3.         $identif = $result['id'];
  4.         $name = $result['name'];
  5.         $email = $result['email'];
  6.         $comment = $result['comment'];
  7.         $time = $result['time'];
  8.        
  9.         print <<<ECHO
  10.         <hr><p style="color:#DC143C; font-weight:bold;">$time</p>
  11.         <p><a href="mailto:$email">$name</a> Оставил(а) комментарий: $comment</p>
  12.         <p align="right"><a href="{$_SERVER['REQUEST_URI']}?del=$identif">Удалить</a></p>
  13.        
  14.        
  15. ECHO;
  16. }


Есть еще либа у меня, откуда вызывается пользовательская функция которая отрисовывает меню и в этот момент происходит ошибка, редекларация, тоесть повторный вызов, в мане искал ответ на свой вопрос, пока что безуспешно.
Хотелось бы узнать как это дело можно обойти, или ж может есть какие то другие альтернативы.

(Отредактировано автором: 22 Марта, 2014 - 21:15:28)

 
 Top
caballero
Отправлено: 22 Марта, 2014 - 21:27:36
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




include_once


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
for
Отправлено: 22 Марта, 2014 - 21:29:19
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




caballero пишет:
include_once



Пробовал. ПечалькО.
 
 Top
Исильдур
Отправлено: 22 Марта, 2014 - 22:34:53
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




for
Редекларация это не повторный вызов, а повторное объявление функции.
Код ошибки в студию.
 
 Top
for
Отправлено: 22 Марта, 2014 - 22:59:26
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Исильдур пишет:
for
Редекларация это не повторный вызов, а повторное объявление функции.
Код ошибки в студию.


Смысл тот же, можно и на техническом языке выражаться, только это не всегда удобно.
Какой еще код? Тут и так все по полочкам разложенно.
 
 Top
Исильдур
Отправлено: 22 Марта, 2014 - 23:10:18
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




for
Что по полочкам разложено?
Что происходит редекларация, а Вы полезли ман читать и ничего не нашли?
Перегрузка функций в php не предусмотрена, меняйте название функции, если include_once не прокатило.
 
 Top
esterio
Отправлено: 23 Марта, 2014 - 11:02:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




function_exists ?
 
 Top
for
Отправлено: 23 Марта, 2014 - 19:44:20
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Исильдур пишет:
for
Что по полочкам разложено?
Что происходит редекларация, а Вы полезли ман читать и ничего не нашли?
Перегрузка функций в php не предусмотрена, меняйте название функции, если include_once не прокатило.


И? Поменяю название функи, что дальше? Она также будет редекларироваться.
Я знаю что такое редекларация, знаю почему она происходит.
(Добавление)
esterio пишет:
function_exists ?


Еху, возможно оно и так. Домой доберусь обязательно попробую.
Суть еще в том, если ближе к конкретике, то на лету метод GET нужен для того что бы на этой же странице его принять и послать SQL запрос на удаление записи из БД.
 
 Top
caballero
Отправлено: 23 Марта, 2014 - 19:52:59
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




угу
вместо исправления быдлоокода делаем костыль с function_exists


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
for
Отправлено: 23 Марта, 2014 - 19:58:39
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




caballero пишет:
угу
вместо исправления быдлоокода делаем костыль с function_exists


Ну дык, в Специалисте толкуют такие подходы реализации удаления записи из БД.
 
 Top
Исильдур
Отправлено: 23 Марта, 2014 - 20:04:21
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




Интересно, каким образом function_exists и удаление из БД связаны...
 
 Top
Panoptik
Отправлено: 23 Марта, 2014 - 21:58:58
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




есть правила для нормального кодирования (стандарты) называются PSR
так вот все из них вам еще не скоро сгодятся но там есть один маленький пункт в стандарте PSR-1
https://github[dot]com/php-fig/fig-s[dot][dot][dot]ding-standard[dot]md

в оригинале
Цитата:
Files SHOULD either declare symbols (classes, functions, constants, etc.) or cause side-effects (e.g. generate output, change .ini settings, etc.) but SHOULD NOT do both.


звучит примерно так

файлы должны либо декларировать сущности (классы, функции, константы) - собственно то что не может быть редекларировано

либо делать побочные эффекты (генерировать вывод, изменять настройки)

но не должны делать и то и другое


короче разделите включаемые (include) файлы на те что описаны и придерживайтесь того чтобы файлы в которых объявляются функции (библиотеки) включались один и ЕДИНСТВЕННЫЙ раз, а остальное уже по желанию

(Отредактировано автором: 23 Марта, 2014 - 21:59:53)



-----
Just do it
 
 Top
for
Отправлено: 27 Марта, 2014 - 19:37:19
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Всех благодарю за отзывы, но function_exists не то что нужно было. Если задать условие с помощью данной функи, то и ссыль не отрисовывается на удаление записи.

В общем, решилось заменой одного символа и вуаля. Там трабла была с QUERY_STRING, после
я дописывал а нужно было так как в REQUEST_URI уже лежал адрес склеиваются ж данные амперсандом, вот такие вот пироги. Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB