|
странность в PHP | ☑ | ||
---|---|---|---|---|
0
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 кода? |
|||
1
Garykom
гуру
16.05.20
✎
22:51
|
$fl == true
true == true |
|||
2
Garykom
гуру
16.05.20
✎
22:54
|
(1)+ В смысле в одном и том же месте меняешь условие и подключение ведет себя по разному?
Или все же в разных местах вызываешь? |
|||
3
vde69
16.05.20
✎
22:55
|
и там и там печатает "тут", то есть в условие заходит
|
|||
4
vde69
16.05.20
✎
22:55
|
(2) в одном и том же
|
|||
5
vde69
16.05.20
✎
22:58
|
при чем самое странное, что файл загружается, но по разному работает, то есть в обоих случаях функции из файла доступны, но работают по разному
|
|||
6
vde69
16.05.20
✎
22:59
|
похоже внутри этого загружаемого файла видимость контекста или других загруженых файлов разная
|
|||
7
Garykom
гуру
16.05.20
✎
23:04
|
(3) Тогда проблема двойного подключения, первый раз ок а на повторное глючит
|
|||
8
vde69
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; } все по старому |
|||
9
Garykom
гуру
16.05.20
✎
23:13
|
(8) Попробуй на другой железке
|
|||
10
Garykom
гуру
16.05.20
✎
23:14
|
(9)+ Если это твой NAS то могут быть проблемы разные, банально объем ram и прочие глюки
|
|||
11
vde69
16.05.20
✎
23:17
|
(10) я локально апач давно поставил, так на много удобнее
|
|||
12
Гончий
17.05.20
✎
01:23
|
(0) Это нормально, это же пхп.
|
|||
13
MyNick
17.05.20
✎
08:30
|
В РНР же на равенство нужно тремя === проверять.
|
|||
14
MyNick
17.05.20
✎
08:32
|
(12) синтаксис для начала надо знать. Чтобы не говорить - это же рнр, это же 1с,это же java, и тп
|
|||
15
MyNick
17.05.20
✎
08:33
|
== это без приведения к типу
=== это с приведением. Вроде так. А что отладчик говорит? |
|||
16
Сияющий в темноте
17.05.20
✎
12:05
|
возможно
оно один раз ввзывается,когда переменная false,а потом,когда true,и тогда явно по разному будет |
|||
17
vde69
17.05.20
✎
12:58
|
я разницу понял:
первый код (true==true) обрабатывается при компиляции и второй раз проходит при рунтайме второй код ($fl == true) не обрабатывается при компиляции а внутрь заходит только при выполнении кода (рунтайм) сейчас буду разбираться почему в этих случаях функционал по разному работает |
|||
18
MyNick
17.05.20
✎
14:45
|
(17) говорюж на равенство надо проверять через ===
Потому что динамическая типизация |
|||
19
MyNick
17.05.20
✎
14:48
|
||||
20
MyNick
17.05.20
✎
14:49
|
П.2
|
|||
21
vde69
17.05.20
✎
14:52
|
(18) какая разница как сравнивать?
Ведь сравнение срабатывает и так, о чем говорит вывод строки... То есть внутрь условия попадает в обоих случаях. |
|||
22
MyNick
17.05.20
✎
14:56
|
Вывод у тебя по true == true
|
|||
23
vde69
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'); } |
|||
24
vde69
17.05.20
✎
15:03
|
причину кривого поведения я нашел, у меня во втором случае в обработчике AJAX переменная $_GET не содержит нужных мне данных
то есть вопрос окружения |
|||
25
vde69
17.05.20
✎
15:44
|
короче, в одном случае у меня не правильно срабатывает подключение хука, подключенная функция никогда не срабатывает, видимо надо смотреть очередь и время подключения
add_action('wp_ajax_theme_up_forms', 'theme_up_forms_ajax'); |
|||
26
vde69
17.05.20
✎
15:45
|
вот примерно моя проблема https://fooobar.com/questions/2100526/wordpress-addaction-inside-another-function
|
|||
27
vde69
17.05.20
✎
16:29
|
короче я решил сдаться, тем более, что весь смысл моей задачи был в более рациональном использовании памяти, но видимо этот уровень магии еще мне не доступен :)
пока сделаю подключение модулей на постоянку, без доп условия. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |