PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (3): [1] 2 3 »
Найдено сообщений: 39
glutaminefree
Отправлено: 18 Ноября, 2013 - 14:58:46 • Тема: ob_start и global • Форум: Вопросы новичков
Ответов: 13 Просмотров: 616
Нет. Не думаю, что это поможет. Но всё таки проверю, но уже завтра. Сейчас работать закончил. Спасибо за советы!
glutaminefree
Отправлено: 18 Ноября, 2013 - 14:48:27 • Тема: ob_start и global • Форум: Вопросы новичков
Ответов: 13 Просмотров: 616
IllusionMH пишет: а при AJAX запросе вы точно проходите шаги присвоения переменной
Да. Прокомментировал выше, что она дебажится нормально даже внутри блока ob_start/ob_end_clean в месте прямо перед подключением шаблона.
glutaminefree
Отправлено: 18 Ноября, 2013 - 14:39:21 • Тема: ob_start и global • Форум: Вопросы новичков
Ответов: 13 Просмотров: 616
Ну у меня так и происходит.
PHP:
скопировать код в буфер обмена
$comments_list = /*запрос с WP_Comment_Query*/
/*
из этого места переменная дебажится нормально,
в ней то, что и должно быть
*/
get_template_part( 'parts/comments' , 'loop' ) ;
Внутри comments-loop.php :
Всё это прекрасно работает, если использовать из шаблонов (например search.php, или на любой странице). И даже если обвернуть в ob_start/ob_end_clean , а потом вывести буфер.
Но если я использую этот код внтури функции:
PHP:
скопировать код в буфер обмена
function more_search( ) {
/*Тут тот самый код*/
}
add_action( 'wp_ajax_more_search' , 'more_search' ) ;
add_action( 'wp_ajax_nopriv_more_search' , 'more_search' ) ;
То внутри подключаемого шаблона переменная оказывается пустой. Что очень очень странно. Посмотрел исходники всех функций, которые учавствуют в get_template_part и не нашёл ничего, из-за чего такое бы могло происходить. Может искал плохо.
glutaminefree
Отправлено: 18 Ноября, 2013 - 14:22:49 • Тема: ob_start и global • Форум: Вопросы новичков
Ответов: 13 Просмотров: 616
IllusionMH пишет: glutaminefree , подключение через get_template_part ?
Через неё самую. Причём в файлах шаблонов используется абсолютно точно такой же код, и там переменная внутри подключаемого файла нормально видится.
А внутри AJAX срипта почему-то беда такая. AJAX работает у меня через хук WP
glutaminefree
Отправлено: 18 Ноября, 2013 - 14:19:10 • Тема: ob_start и global • Форум: Вопросы новичков
Ответов: 13 Просмотров: 616
Да, я уже проверил именно такой код. Работает как надо. У меня несколько иная ситуация. Там AJAX запрос и функция подлюкчения файла Wordpress'овская.
Пробовал не через AJAX тот же самый кусок кода использовать - работает отлично. Именно в AJAX обработчике почему-то переменная теряется.
get_defined_vars говорит, что переменная появляется, но пустая.
А global всё же нужен, ибо подключается файл на самом деле через функцию. Я просто подумал, что не в Wordpress дело, и накатал упрощенную версию кода.
glutaminefree
Отправлено: 18 Ноября, 2013 - 13:23:09 • Тема: ob_start и global • Форум: Вопросы новичков
Ответов: 13 Просмотров: 616
Приветствую!
В гугле ничего найти не смог по этой теме. Вобщем внутри конструкции ob_start/ob_end_clean есть подключаемый файл, и в нём не работает конструкция global .
Вот примерно так:
Внутри подключаемого файла примерно такое:
Соответственно в $html ничего нет. $data внутри конструкции ob_start/ob_end_clean нормально дебажится, но вот в подключаемом файле почему-то даже после global не хочет отдавать данные.
Версия php - 5.4.17
ОС - Fedora 17 x86_64
glutaminefree
Отправлено: 30 Декабря, 2012 - 16:11:44 • Тема: foreach и null • Форум: Вопросы новичков
Ответов: 2 Просмотров: 258
Действительно помогает. Я думал, что unset переменной после foreach со ссылкой уничтожит последний элемент.
glutaminefree
Отправлено: 30 Декабря, 2012 - 15:28:54 • Тема: foreach и null • Форум: Вопросы новичков
Ответов: 2 Просмотров: 258
Приветствую!
Столкнулся с таким вот поведением foreach :
PHP:
скопировать код в буфер обмена
php
> $arr = array ( '1' => '123' , '2' => '123' , '3' => '123' ) ; [ 1 ] =>
string( 3 ) "123"
[ 2 ] =>
string( 3 ) "123"
[ 3 ] =>
string( 3 ) "123"
}
php > foreach ( $arr as & $a ) $a = null ;
[ 1] =>
NULL
[ 2] =>
NULL
[ 3 ] =>
& NULL
}
Вот интересует, почему последний элемент не NULL , а ссылка на NULL ? И можно ли что-то сделать, чтобы избежать этого, кроме как после foreach присваивать в наглую NULL последнему элементу?
(Добавление)
Хмм, ему даже если после присвоить какое-либо значение, то это будет ссылка на значение. Видимо проще всего работать с временным массивом, а после присвоить его первичному.
glutaminefree
Отправлено: 30 Ноября, 2012 - 15:29:56 • Тема: Отсеять поле с NULL с помощью IF или CASE • Форум: SQL и Архитектура БД
Ответов: 10 Просмотров: 84
Мелкий пишет: glutaminefree , ну и? Почему бы его и не получать, раз не нужен?
Так значения то в одних и тех же полях.
CODE (
htmlphp ):
скопировать код в буфер обмена
+----+----------------+--------------+
| id | meta_name | meta_value |
+----+----------------+--------------+
| 3 | translate_type | localization |
| 3 | experience | 2 |
| 4 | translate_type | written |
| 4 | translate_type | voice |
| 4 | experience | 5 |
+----+----------------+--------------+
glutaminefree
Отправлено: 30 Ноября, 2012 - 13:24:22 • Тема: Отсеять поле с NULL с помощью IF или CASE • Форум: SQL и Архитектура БД
Ответов: 10 Просмотров: 84
Просто в таблице user_meta хранятся разные данные. Мне нужно получить значение experience , и проверить, чтобы translate_type был определённого значения, но при этом не нужно его получать.
А структура таблиц приведена выше, если что.
Страниц (3): [1] 2 3 »
Powered by ExBB FM 1.0 RC1. InvisionExBB