OVA
Moдератор
   
Карма +1563/-118
Offline
Пол: 
Сообщений: 14788
Тула
Нормозавр 21261-070 (был). Нынче Фабула.
Тула ИЖ 21261-030
|
 |
« Ответ #15 : 27 Января 2026, 19:46:52 » |
|
Требования объявлять функции раньше появления ссылки на функции — нет, за исключением условного определения функции, как показывают два следующих примера.
https://www.php.net/manual/ru/functions.user-defined.phpНо я не проверял.
|
|
|
|
|
Записан
|
P.S. Василий. Еще один из беглых ижевчан. --- (ОКПП, ГБО, ЭСП), поборол электричество, "бустера" дворников нет 
|
|
|
Paramedic
     
Карма +1539/-10
Offline
Пол: 
Сообщений: 20053
Иваново
Тиран и Диктатор
 Иваново Megane III Expression, МКПП5, +ESP (Был ИЖ-2126-30)
|
 |
« Ответ #16 : 27 Января 2026, 21:25:53 » |
|
Проверил. Всё работает. <?php
echo foo();
function foo() { return "Hello World!"; }
Проверял и на 5.6 и на 8.4 В режиме CLI. Прямо в командной строке php test.php
|
|
|
|
|
Записан
|
Это сейчас мода такая — задавать глупые вопросы с невинным видом, типа, "всё совсем не так, как вам кажется"?
|
|
|
|
tim123 ТС
|
 |
« Ответ #17 : 27 Января 2026, 23:38:34 » |
|
Дай-ка почитать.
А так пж-ста, из интерактивной справки (для версии 5.5.х): Примерно то же написано для версии >=7 на родном языке в офиц-ной он-лайнке на php . org (или net ?) -- 2 часа назад читал Функции, определяемые пользователем Приведем пример синтаксиса, используемого для описания функций: ....... тра-ля-ля ля-ля ля-ля Функции не обязаны быть определены до их использования, исключая тот случай, когда функции определяются условно, как это показано в двух последующих примерах.
В случае, когда функция определяется в зависимости от какого-либо условия, например, как это показано в ...... Это про то, когда боди внутри IF{ }, но это понятно и мне не интересно.
Теперь уже кажется понял причину. Оказалось, когда в конце использовал инклуд с функцией, вот тогда и получал Fatal error: Call to undefined function имя-функции in имя-файла on line номер-строки Стоит только воткнуть боди в конец исходника непосредственно, то работает. Судя по всему, новое ИМЯ в инклуде -- это уже вторая итерация для парсинга, и до неё он не добирается. Что-то вроде того. А может быть есть настройка, регулирующая глубину вложенности парсинга?
|
|
|
|
« Последнее редактирование: 27 Января 2026, 23:49:07 от tim123 »
|
Записан
|
|
|
|
|
tim123 ТС
|
 |
« Ответ #18 : 27 Января 2026, 23:47:52 » |
|
Проверил. Всё работает.
Ну вот, а если в инклуде, то нет. И тоже в CLI. файл any . php<?php ## php any.php >log ##
echo foo(); include_once( 'any.inc'); ?> файл any . inc<?php ## php any.php >log ## function foo() { return "Hello World!"; } ?> Fatal error: Call to undefined function foo() in ..........\php\Any.php on line 4
|
|
|
|
|
Записан
|
|
|
|
|
tim123 ТС
|
 |
« Ответ #19 : 28 Января 2026, 00:03:12 » |
|
Но именно вы и помогли с простым примером.
|
|
|
|
|
Записан
|
|
|
|
OVA
Moдератор
   
Карма +1563/-118
Offline
Пол: 
Сообщений: 14788
Тула
Нормозавр 21261-070 (был). Нынче Фабула.
Тула ИЖ 21261-030
|
 |
« Ответ #20 : 28 Января 2026, 08:34:44 » |
|
Include если вперёд вызова вынести, imho, получится без ошибок
|
|
|
|
|
Записан
|
P.S. Василий. Еще один из беглых ижевчан. --- (ОКПП, ГБО, ЭСП), поборол электричество, "бустера" дворников нет 
|
|
|
Paramedic
     
Карма +1539/-10
Offline
Пол: 
Сообщений: 20053
Иваново
Тиран и Диктатор
 Иваново Megane III Expression, МКПП5, +ESP (Был ИЖ-2126-30)
|
 |
« Ответ #21 : 28 Января 2026, 10:22:29 » |
|
Ну вот, а если в инклуде, то нет. И тоже в CLI. Смотри, php сначала берёт файл, потом его парсит. Давай проверим. <?php ## php any.php >log ## echo foo(); include_once('any.inc');
echo "This will break" // ← нет точки с запятой — синтаксическая ошибка
Поместим синтаксическую ошибку в самый конец файла. На выходе получаем: C:\DEV\PHP\5.6.40\php.exe C:\Projects\untitled\any.php
Parse error: syntax error, unexpected end of file, expecting ',' or ';' in C:\Projects\untitled\any.php on line 8
Process finished with exit code 255
Так и написано: ошибка парсинга. Вот в момент парсинга PHP регистрирует все функции и классы. Но PHP парсит только один файл. Но не лезет парсить второй. include - это динамическая загрузка. Подключение идёт на этапе выполнения. Поэтому просто перенеси include выше места вызова функции. А ещё часто используют подобную конструкцию: <?php include_once('any.inc');
if (function_exists('foo')) { echo foo(); } else { echo "Function foo() not found"; }
И сейчас не рекомендуется использовать символ # для комментариев. Т.к. с 8-й версии в PHP используются атрибуты, и они как раз начинаются с этого символа. А также не рекомендуется закрывать файл ?> Иначе вот такая конструкция include 'config.php'; header('Location: /home');
не сможет работать, если config.php будет закрыт
|
|
|
|
|
Записан
|
Это сейчас мода такая — задавать глупые вопросы с невинным видом, типа, "всё совсем не так, как вам кажется"?
|
|
|
OVA
Moдератор
   
Карма +1563/-118
Offline
Пол: 
Сообщений: 14788
Тула
Нормозавр 21261-070 (был). Нынче Фабула.
Тула ИЖ 21261-030
|
 |
« Ответ #22 : 28 Января 2026, 11:56:42 » |
|
Да, лучше отказаться от краткого и использовать полный синтаксис обрамления кода php. Подтверждаю.
|
|
|
|
|
Записан
|
P.S. Василий. Еще один из беглых ижевчан. --- (ОКПП, ГБО, ЭСП), поборол электричество, "бустера" дворников нет 
|
|
|
Paramedic
     
Карма +1539/-10
Offline
Пол: 
Сообщений: 20053
Иваново
Тиран и Диктатор
 Иваново Megane III Expression, МКПП5, +ESP (Был ИЖ-2126-30)
|
 |
« Ответ #23 : 28 Января 2026, 12:25:53 » |
|
Здесь речь про закрывающий тэг. Его применение сейчас стандартом не одобряется. Пример привёл чуть выше. Закрывающий тэг следует использовать только там, где без него не обойтись. Например, в спагетти html и php
|
|
|
|
|
Записан
|
Это сейчас мода такая — задавать глупые вопросы с невинным видом, типа, "всё совсем не так, как вам кажется"?
|
|
|
|
tim123 ТС
|
 |
« Ответ #24 : 28 Января 2026, 19:32:37 » |
|
Да ладно уж, 8я версия мне не грозит (скорее всего), у мне 7я даже пока не хочет работать, проблемы с этой, redistributable дээлэлью. Они есть, но они какие-то неправильные, хотя из мозиллы. Так что остаются версии, где использ. crt v11. И тчк.
Я полагаю, что 2-3 диеза вполне будут работать как комментарий, если, конечно, его полностью не запретят. А у меня автоматизм на двойное повторение символа. Пошло ещё со времён ТОЙ страны, в МС Барсике, там одиночная кавычка, и её иной раз не увидать не то что на распечатке, а даже на экране она слишком тонкая, вот я и дублирую всегда и везде. Этой привычке уже десятки лет. А заодно, когда их много, они ещё визуально выделяются. Так же как и две косые палки.
|
|
|
|
|
Записан
|
|
|
|
|
tim123 ТС
|
 |
« Ответ #25 : 28 Января 2026, 19:42:52 » |
|
А ещё. Из-за того, что 7я версия у мне не работает, нужна утилита, к-рая записывает канвасу в бмп формат. Чтобы её вызывать из пхп. Встроенная ф-ция появилась только в в.7.2.
Или готовую самоделку в пхп для в.5.5.
Меня не устроил (ff mpeg). Он вписывает название своего кодека, а его иностранцы, оказалось, не любят. Разбираться, как там у него и что настраивается, слишком муторно. Такие дела.
|
|
|
|
|
Записан
|
|
|
|
Paramedic
     
Карма +1539/-10
Offline
Пол: 
Сообщений: 20053
Иваново
Тиран и Диктатор
 Иваново Megane III Expression, МКПП5, +ESP (Был ИЖ-2126-30)
|
 |
« Ответ #26 : 28 Января 2026, 21:15:16 » |
|
Переформулируй задачу. Картинками в PHP занимается модуль GD, но он не пишет в bmp. Либо гугли в сторону ImageMagic, либо ищи/пиши что-то самописное. BMP простой, как валенок
|
|
|
|
|
Записан
|
Это сейчас мода такая — задавать глупые вопросы с невинным видом, типа, "всё совсем не так, как вам кажется"?
|
|
|
|
tim123 ТС
|
 |
« Ответ #27 : 28 Января 2026, 22:28:16 » |
|
Э-эх, чем вы все только читаете?.. всё торопятся куда-то... А ещё. Из-за того, что 7я версия у мне не работает, нужна утилита, .... Встроенная ф-ция появилась только в в.7.2.
Или готовую самоделку в пхп для в.5.5.
Такие дела.
Об GD и речь. image2bmp() -- так в их хелпе Не такой уж и валенок, особенно новый. Простой -- это когда ты можешь на бумажке, никуда не заглядывая.
|
|
|
|
« Последнее редактирование: 28 Января 2026, 22:31:22 от tim123 »
|
Записан
|
|
|
|
Paramedic
     
Карма +1539/-10
Offline
Пол: 
Сообщений: 20053
Иваново
Тиран и Диктатор
 Иваново Megane III Expression, МКПП5, +ESP (Был ИЖ-2126-30)
|
 |
« Ответ #28 : 29 Января 2026, 07:49:29 » |
|
Э-эх, чем вы все только читаете? Глазами  Ты сумбурно пишешь. Встроенная ф-ция появилась Это не встроенная функция. Это функция из расширения. Как я писал выше, используй ImageMagick. Ставишь утилиту в ОС (не знаю, что у тебя там), подключаешь расширение imagick, пользуешься https://www.php.net/imagick
|
|
|
|
|
Записан
|
Это сейчас мода такая — задавать глупые вопросы с невинным видом, типа, "всё совсем не так, как вам кажется"?
|
|
|
|
tim123 ТС
|
 |
« Ответ #29 : 29 Января 2026, 19:47:12 » |
|
А разве ф-ция не встроена в расширение?
К этому всегда ответы сводились - купи новый ноут, установи новую винду и т.д. Здесь по крайней мере она 100% легальная. А могу ещё графический редактор использовать. У него в менюшке можно делать пакетные преобразования и не париться. Да-да, и вызывать это всё из командной строки - ведь бред же. На дворе не та дата, чтобы самому как 30 лет назад за всё браться.
Я же пишу: про блемы с версией пхп, оно же с обоими магиками. Не вариант это, это всё надо на другом компе. И ИмМаг там есть, но он огромный пакет, и он сюда не портабелен.
Ладно, хорош, если наткнётесь на готовое, но маленькое, плз, дайте знать. Только строго не в почту.
|
|
|
|
|
Записан
|
|
|
|
|