Тоды, видимо, должно делаться автоматом... Аля в C++
Если там вообще динамические данные есть - не знаю.
Смысл в том, что если чего-то там заводит временные данные в динамической памяти (не в стеке, как локальные переменные), то их надо когда-то и уничтожать.
В том числе и при исключениях, которые нарушают канонический порядок исполнения.
В C++, к примеру, если ты завел себе переменную, то ейный деструктор автоматически помещается в такой блок, который запускается по окончании области видимости этой переменной.
Ну это так - общефилософские знания... Конкретные детали PHP для меня неведомы
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
|
|||
карма: 9 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Nic писал(а): Раз функция возвращает значение, которое можно проверить, то логично было бы ожидать что такая схема:Логично ожидать, что будет возможность проверить результат вызова ф-ции. Поэтому в таких случаях добавляется опция IgnoreResult. Nic писал(а): А по логике Delphi1 можно было бы ожидать другой результат:к сожалению в пакете WEB не везде применима логика Delphi1. Однако в данном случае пожалуй результат действительно не тот, который следовало ожидать. Nic писал(а): Человек он молодой, а молодое дело понять можно.к сожалению добросовестность мантажников от возраста заказчика мало зависит Nic писал(а): Чтобы соорудить описание класса пришлось сделать элементкомпонент можно реализовать гораздо проще. Вместо метода doDefine нужно написать метод Init:
где BLK_CLASS_HEAD это блок, объявленный в элементе, который у вас печатает заголовок класса class WFDocument(). Nic, одна из причин, по которой в php не было добавлено элементов работы с классами это отсутствие полезности таковых для пользователя hiasm. Насколько я понимаю у вас просто стоит задача переделать некий php скрипт один в один на элементах hiasm. Возможно потом такие элементы и появятся в качестве примитивов для создания компонент на базе контейнеров. [size=-2]------ Добавлено в 11:02 Nic писал(а): Простейший вариант компонента hiTry_catch.hws примерно выглядит так:судя по коду из этого
|
|||
карма: 27 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Dilma писал(а): у вас просто стоит задача переделать некий php скрипт один в один на элементах hiasmМне показалось это наиболее рациональным способом изучения возможностей пакета HiAsm WEB. Dilma писал(а): а это не есть хорошознаю - делается это как временная "заплата" в расчёте на будущее "красивое решение", но есть опасение, что нет более постоянного чем временное. Судя по: Dilma писал(а): ...Возможно потом такие элементы и появятся ...Dilma писал(а): где BLK_CLASS_HEAD это блок, объявленный в элементе...Заголовок класса пока печатает переделанный компонент Function, поэтому пока не могу разобраться с объявлением блока в нём, но если нет другого пути - придётся. |
|||
карма: 6 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Nic писал(а): Мне показалось это наиболее рациональным способом изучения возможностей пакета HiAsm WEB.так это не в притензию было сказано По началу тоже так результат проверял путем переделки один в один исходников форума hiasm. Nic писал(а): в расчёте на будущее "красивое решение"к сожалению не приходилось тесно работать с классами и исключениями в php, поскольку необходимости такой там никогда не возникало. А делать по одному классу на каждую компоненту приложения это слишком не рационально. Поэтому в данном случае могу только подсказать, как уже готовые элементы сделать удобнее и проще. |
|||
карма: 27 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Для определения функций в теле класса иногда нужен тип функции. Можно ли добавить это в компонент Function?
С описанием класса hiClass.hws дело обстоит так:
[size=-2]------ Добавлено в 14:07 Dilma писал(а): где BLK_CLASS_HEAD это блок, объявленный в элементе, который у вас печатает заголовок классаКак мне объявить этот блок в компоненте hiClass.hws? |
|||
карма: 6 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Nic писал(а): Можно ли добавить это в компонент Function?добавлять эту правку только для ф-ции без остальных элементов смысла не имеет. Необходимо сделать тогда уж полную концепцию работы с классами: скажем я пока не вижу особого смысла в выносе полей класса в отдельный элемент. Вероятно удобнее добавить еще по одной опции в св-во Extern и вместо True, False сделать набор вида Local, Global, Classes. В этом случае будет достаточно легко вносить и выносить ф-цию из класса без перестройки методов. Кроме того подумать как организовать объявление переменной класса. Ну и все остальное в этом же духе. Пока же все очень сыро: Nic писал(а): Для определения функций в теле класса иногда нужен тип функцииа так не проще ли?
[size=-2]------ Добавлено в 14:22 Nic писал(а): Как мне объявить этот блок в компоненте hiClass.hws?примерно так code_1593.txt |
|||
карма: 27 |
| ||
файлы: 1 | code_1593.txt [550B] [963] |
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Можно ли добавить в компонент Function функциональность, позволяющую генерить такой вот код?
|
|||
карма: 6 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
для этого придется аргументы по другому задавать
[size=-2]------ Добавлено в 13:24 Nic, реализовал таки вчера вашу идею по поводу предпросмотра кода, генерируемого компонентом из среды. После получения результата понял насколько была проста и гениальна эта идея Работает это хозяйство так: при зажатом Ctrl в среде нужно навести курсор на work точку элемента и чуть чуть подождать. После этого HiAsm запустит фиктивную компиляцию проекта, в процессе которой кодогенератор соберет информацию по данной точки и передаст её среде. Затем среда вместо имени точки выведет в подсказке реальный кусок кода, генерируемый данным методом элемента с его текущими настройками, текущим включением и текущими данными из потока. Причем подчерку еще раз: выводится именно реально-генерируемый код для данного метода. Благодаря этой особенности отладить любой элемент во всех его возможных включениях и настройках стало делом 5 секунд - поправил код, сохранил, навел на точку в среде - получил результат. А отладить приложение стало теперь возможно даже не запуская его: просто берешь и последовательно проходишь по всем точкам ветки и смотришь какие данные и откуда попадают в метод и какие события с какими данными он вызывает. Там же очень хоршо и наглядно видно какая оптимизация при этом делается. Однако все это богаство доступно только тем, кто разбирается в коде. Нужно подумать, как ужать это до привычным простому пользователю терминов и выдать в той же подсказке. |
|||
карма: 27 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Dilma, и где взять эту прелесть?
|
|||
карма: 22 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Переработанная версия компонента hiTry_catch.hws:
|
|||
карма: 6 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
хотелось еще небольшой пример использования. Кроме того не совсем понятно что это:
Exceptions - Список функций обработчика исключений catch [size=-2]------ Добавлено в 13:35 После ознакомления с кодом такие вопросы: 1) CustomEx_1 - нужноли их задавать пользователю, или можно генерить автоматом? 2) $ex - видимо из переменной можно прочесть код исключения и текстовое описание. Как предполагается делать это? |
|||
карма: 27 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
1) С автоматом будут проблемы, если обработчик исключительных ситуаций находится в другой схеме и не предполагается их объединять.
2) Dilma писал(а): Как предполагается делать это?Сначала пробовал добавить нижнюю точку Value, которая возвращала, примерно такой код:
|
|||
карма: 6 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Dilma писал(а): Однако все это богаство доступно только тем, кто разбирается в коде.И если оптимальность кода всегда локальна... |
|||
карма: 9 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Dilma писал(а): не совсем понятно что это:
Exceptions - Список функций обработчика исключений catch В PHP5 предусмотрен новый класс Exception, который может использоваться в коде, выполняемом под сервером PHP5. Также есть возможность определять собственные классы, которые наследуют методы класса Exception. Подклассы могут быть определены так:
|
|||
карма: 6 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Nic писал(а): Но если учитывать что методов с разными именами может быть N+1не понимаю в чем тут проблема. может стоит выдавать его в поток сразу:
|
|||
карма: 27 |
|