Оно наверняка есть, просто "пипл хавает" мысль "для web только php" и ничего другого знать не желает.
По мне так php "язык без концепции", как и например perl - т.е. язык начал создаваться до того, как была полностью продумана его концепция. Из-за этого на нём тяжело писать хороший код, а так-же разбираться в чужом.
Для примера небольшая CGI-форма на Tcl:
Код: Выделить всё
#!/usr/bin/tclsh
package require cgi
append auto_path " ."
cgi_input
foreach zz [cgi_import_list] {
cgi_import $zz
}
start
set tit $::login(name)@$::login(domain)
if {[checkFlags status $::login(status) admin]} {
append tit " - postmaster"
} elseif {[checkFlags status $::login(status) domain]} {
append tit " - postmaster of $::login(domain)"
} else {
PermDenied
exit 0
}
if {![info exists domain]} {
if {[checkFlags status $::login(status) admin]} {
dview $tit
exit 0
} else {
set domain $::login(domain)
}
}
set row [lindex [SQL "select act, alias from domains where domain<>'' and domain='$domain' and alias = ''"] 0]
if {$row == ""} {
cgi_head {
cgi_title Error
}
cgi_body {
cgi_h2 "Домен $domain здесь не обслуживается."
}
exit 0
}
set active [lindex $row 0]
set aliases [lindex $row 1]
cgi_head {
cgi_meta HTTP-EQUIV="Content-Type" "CONTENT=\"text/html; charset=UTF-8\""
cgi_meta HTTP-EQUIV="Pragma" {content=no-cache}
cgi_title $tit
}
cgi_body {
cgi_form domain_save method=post {
if {[info exists goto]} {
cgi_text f_goto=$Is(goto) type=hidden
}
cgi_text f_domain=$domain type=hidden
cgi_table border=0 {
cgi_table_row {
td align=right "Домен: "
td $domain
}
cgi_table_row {
td align=right "Отключить домен: "
table_data {
cgi_checkbox f_del1=$active checked_if_equal=0
cgi_checkbox f_del2=$active checked_if_equal=0
cgi_checkbox f_del3=$active checked_if_equal=0
}
}
cgi_table_row {
td align=right "Переадресация: "
table_data {
cgi_table border=0 {
cgi_table_row {
td Name
td Target
td On
}
set q "select name, target, act from aliases where domain='$domain' order by name"
set str 0
foreach row [SQL $q] {
cgi_table_row {
table_data {
cgi_text f_fwdname$str=[lindex $row 0] maxlength=50 size=20
}
table_data {
cgi_text f_fwdtarget$str=[lindex $row 1] size=70
}
table_data {
cgi_checkbox f_fwdact$str=[lindex $row 2] checked_if_equal=1
}
}
incr str
}
cgi_table_row {
table_data {
cgi_text f_fwdname$str= maxlength=50 size=20
}
table_data {
cgi_text f_fwdtarget$str= size=70
}
table_data {
cgi_checkbox f_fwdact$str= checked_if_equal=1
}
}
}
cgi_text f_fwdmax=$str type=hidden
}
}
cgi_table_row {
table_data align=right {
cgi_submit_button =Сохранить
}
table_data {
cgi_reset_button Очистить
}
}
}
}
}
exit 0
Кто из вас знал, что так можно?..
