Вход | Регистрация
 

странность в PHP

странность в 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
(2) в одном и том же
   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
короче я решил сдаться, тем более, что весь смысл моей задачи был в более рациональном использовании памяти, но видимо этот уровень магии еще мне не доступен :)

пока сделаю подключение модулей на постоянку, без доп условия.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.