|
странность в PHP
|
Я
|
|
vde69 16.05.20 - 22:37 | что-то странное у меня в PHP (WordPress),
вот так работает (файл подключается) и печатает "тут"
if ( true == true ) {
echo "тут";
theme_include_lib('admin_page_db_print.php');
}
а вот так печатает "тут" но файл не подключается (или подключается но не работает)
if ( $fl == true ) {
echo "тут";
theme_include_lib('admin_page_db_print.php');
}
в логах ошибки нет...
чем отличаются эти 2 кода? |
Garykom 1 - 16.05.20 - 22:51 | $fl == true
true == true |
Garykom 2 - 16.05.20 - 22:54 | ( 1)+ В смысле в одном и том же месте меняешь условие и подключение ведет себя по разному?
Или все же в разных местах вызываешь? |
vde69 3 - 16.05.20 - 22:55 | и там и там печатает "тут", то есть в условие заходит |
vde69 4 - 16.05.20 - 22:55 | |
vde69 5 - 16.05.20 - 22:58 | при чем самое странное, что файл загружается, но по разному работает, то есть в обоих случаях функции из файла доступны, но работают по разному |
vde69 6 - 16.05.20 - 22:59 | похоже внутри этого загружаемого файла видимость контекста или других загруженых файлов разная |
Garykom 7 - 16.05.20 - 23:04 | ( 3) Тогда проблема двойного подключения, первый раз ок а на повторное глючит |
vde69 8 - 16.05.20 - 23:08 | ( 7) не похоже, добавил проверку
if ( ($_GET['page'] == "theme_db_admin_menu") && !function_exists ( "theme_print_db_page_cron" ) ) {
$fl = true;
} else {
$fl = false;
}
все по старому |
Garykom 9 - 16.05.20 - 23:13 | ( 8) Попробуй на другой железке |
Garykom 10 - 16.05.20 - 23:14 | ( 9)+ Если это твой NAS то могут быть проблемы разные, банально объем ram и прочие глюки |
vde69 11 - 16.05.20 - 23:17 | ( 10) я локально апач давно поставил, так на много удобнее |
Гончий 12 - 17.05.20 - 01:23 | ( 0) Это нормально, это же пхп. |
MyNick 13 - 17.05.20 - 08:30 | В РНР же на равенство нужно тремя === проверять. |
MyNick 14 - 17.05.20 - 08:32 | ( 12) синтаксис для начала надо знать. Чтобы не говорить - это же рнр, это же 1с,это же java, и тп |
MyNick 15 - 17.05.20 - 08:33 | == это без приведения к типу
=== это с приведением. Вроде так.
А что отладчик говорит? |
Сияющий в темноте 16 - 17.05.20 - 12:05 | возможно
оно один раз ввзывается,когда переменная false,а потом,когда true,и тогда явно по разному будет |
vde69 17 - 17.05.20 - 12:58 | я разницу понял:
первый код (true==true) обрабатывается при компиляции и второй раз проходит при рунтайме
второй код ($fl == true) не обрабатывается при компиляции а внутрь заходит только при выполнении кода (рунтайм)
сейчас буду разбираться почему в этих случаях функционал по разному работает |
MyNick 18 - 17.05.20 - 14:45 | ( 17) говорюж на равенство надо проверять через ===
Потому что динамическая типизация |
MyNick 19 - 17.05.20 - 14:48 | |
MyNick 20 - 17.05.20 - 14:49 | П.2 |
vde69 21 - 17.05.20 - 14:52 | ( 18) какая разница как сравнивать?
Ведь сравнение срабатывает и так, о чем говорит вывод строки... То есть внутрь условия попадает в обоих случаях. |
MyNick 22 - 17.05.20 - 14:56 | Вывод у тебя по true == true |
vde69 23 - 17.05.20 - 14:59 | ( 22) выводит в обоих случаях
вот так работает (файл подключается) и печатает "тут"
if ( true == true ) {
echo "тут"; // это ПЕЧАТАЕТ
theme_include_lib('admin_page_db_print.php');
}
а вот так печатает "тут" но файл не подключается (или подключается но не работает)
if ( $fl == true ) {
echo "тут"; // это ПЕЧАТАЕТ
theme_include_lib('admin_page_db_print.php');
} |
vde69 24 - 17.05.20 - 15:03 | причину кривого поведения я нашел, у меня во втором случае в обработчике AJAX переменная $_GET не содержит нужных мне данных
то есть вопрос окружения |
vde69 25 - 17.05.20 - 15:44 | короче, в одном случае у меня не правильно срабатывает подключение хука, подключенная функция никогда не срабатывает, видимо надо смотреть очередь и время подключения
add_action('wp_ajax_theme_up_forms', 'theme_up_forms_ajax'); |
vde69 26 - 17.05.20 - 15:45 | вот примерно моя проблема |
vde69 27 - 17.05.20 - 16:29 | короче я решил сдаться, тем более, что весь смысл моей задачи был в более рациональном использовании памяти, но видимо этот уровень магии еще мне не доступен :)
пока сделаю подключение модулей на постоянку, без доп условия. |