Вверх ↑
Главный модератор
Ответов: 2999
Рейтинг: 396
#1: 2007-06-25 10:17:10 ЛС | профиль | цитата
Человек он молодой, а молодое дело понять можно.

[size=-2]------ Добавлено в 16:22
Чтобы соорудить описание класса пришлось сделать элемент hiClassVar.hws:

func doDefine()
println(code(Type), ' ', '$' + code(Name), ';')
event(onDefine)
end

func doSet(_data)
println('$this->' + code(Name), ' = ', _data, ';')
end

func Value()
return('$this->' + code(Name))
end
и ClassVar.ini:

[About]
Version=1.0
Author=Nic
Mail=nic@savelovo.net

[Type]
Class=Element
Info=Переменная класса
Tab=PHP

[Property]
Name=Имя определяемой в классе переменной|2|
Type=Тип переменной класса:public - общего доступа, protected - защищённая, private - локального доступа|14|0|public,protected,private

[Methods]
doDefine=Определяет в рамках класса указаное имя переменной|1|
doSet=Устанавливает значение переменной|1|
onDefine=Событие происходит всякий раз после определения переменной в классе|2|
Value=Возвращает значение переменной|3|
Схема:

Add(EntryPoint,5992085,21,105)
{
link(onStart,9141555:doPrint,[])
}
Add(MultiElementEx,9141555,70,105)
{
CodeType=1
}
BEGIN_SDK
Add(EditMultiEx,10680822,6,6)
{
WorkCount=#7:doPrint|
Width=356
Height=172
link(doPrint,1628728:doPrint,[])
}
Add(Function,1628728,35,35)
{
Name="WFDocument"
Mode=1
link(onPrint,13581855:doEvent,[])
}
Add(Function,445813,175,42)
{
Args=1
Name="setFilename"
link(onPrint,4497108:doData,[])
}
Add(DoData,4497108,238,42)
{
link(onEventData,9813299:doSet,[])
link(Data,445813:Arg1,[(244,37)(220,37)(220,86)(181,86)])
}
Add(ClassVar,9813299,294,35)
{
Name="filename"
Type=2
}
Add(Hub,13581855,84,35)
{
OutCount=3
link(onEvent1,9813299:doDefine,[])
link(onEvent2,445813:doPrint,[])
link(onEvent3,8595123:doPrint,[(149,55)(149,97)])
}
Add(Function,8595123,182,91)
{
Name="getFilename"
link(onPrint,6944616:doData,[])
}
Add(DoData,6944616,245,91)
{
link(onEventData,8595123:doReturn,[(287,97)(287,130)(170,130)(170,104)])
link(Data,9813299:Value,[(251,79)(300,79)])
}
END_SDK
Код:

<?php

class WFDocument() {
private $filename;

function setFilename($arg1) {
$this->filename = $arg1;
}

function getFilename() {
return($this->filename);
}
}

?>

[size=-2]------ Добавлено в 23:23
Нужна конструкция:

...
try {
...
} catch (e) {
...
}
...

[size=-2]------ Добавлено в 10:17
Простейший вариант компонента hiTry_catch.hws примерно выглядит так:

func doTry(data):java
fvar(od)
println('try {')
block.inclvl()
od = isndef(OutData) ? "" : _data_
event(onTry, od)
block.declvl()
println('} catch (',code(Exception),') {')
if(linked(onCatch))
block.inclvl()
event(onCatch, od)
block.declvl()
println('}')
end
end
и Try_catch.ini:

[About]
Version=1.0
Author=Nic
Mail=nic@savelovo.net

[Type]
Class=Element
Info=Конструкция Try - catch
Tab=PHP

[Property]
Exception=Объект функции обработчика исключений|2|
OutData=Данные, выдаваемые в поток событиями onTry и onCatch: InData - выдавать в поток копию данных со входа, NULL - не выдавать в поток никаких данных|4|0|InData,NULL

[Methods]
doTry=Определяет содержимое блока Try|1|
onTry=Событие происходит всякий раз при формировании блока Try|2|
onCatch=Событие происходит всякий раз при формировании блока исключения Catch|2|
Переделал из If_else - отсюда рудимент OutData. Но компонент не учитывает ситуацию, когда блоков catch несколько:

...
try {
...
} catch(UserException_1 $e)
...
} catch(UserException_2 $e)
...
}
...
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0