• 4074阅读
  • 0回复

[PHP]我在想能否利用现有资源简单地模拟事件驱动型程序设计 [复制链接]

上一主题 下一主题
离线XChinux
 

只看楼主 倒序阅读 楼主  发表于: 2005-07-30
先是看了ASP.NET,后又看了PHP社区中开源的PRADO(事件驱动模型)项目,由于PRADO开展不久(去年六月发起,到现在发展到2.0版,但我看了一下,其仍然很不成熟,有诸多限制,当然,如有更多的人关注,其前景是很好的,将来说不定还能成为PHP标准事件驱动模型库),我在想能否利用现有资源简单地模拟事件驱动型程序设计,下面是我试验的代码。
就像ASP.NET一样,需要HIDDEN类型的INPUT标签和FORM的POST方法的支持。不同的是,在这里必须需要JavaScript的辅助才能完成。
做到更加抽象的高阶,可以把所有事件函数(PHP的)抽象出来,组成像ASP.NET里的Code behide一样的形式。当然,也可以把模板也独立出来。也就是,专门写一个PHP类(这个文件,就是所谓的Code behide文件),处理此页面的所有事件。事件触发函数名和在表单中JavaScript使用的事件函数名有关联(在本例中,使用同样的函数名)。以此设计,寄希望于统一事件处理模型,使开发者能专注于逻辑功能的实现。而不再耗费大量的代码和时间来处理表单验证问题。


<?php
// 自定义事件函数
function button1Click()
{
  if ($_POST['text1'] != "password")
  echo("Error");
}
function button2Click()
{
  $_POST['text1'] = "";
}
// 判断函数
if (isset($_POST['hidden1']) && $_POST['hidden1'] != "")
{
  $_POST['hidden1']();
}
?>
<html>
<head>
<title>
你好中国
</title>
<script language="javascript">
function button1Click()
{
  hidden1.value = "button1Click";
  formPost.submit();
}
function button2Click()
{
  hidden1.value = "button2Click";
  formPost.submit();
}
</script>
</head>
<body>
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST" id="formPost">
<input type="hidden" name="hidden1" id="hidden1" value=""/>
<input type="text" name="text1" id="text1" value="<?=$_POST['text1']?>"/>
<input type="button" name="button1" id="button1" value="提交" onclick="button1Click()"/>
<input type="button" name="button2" id="button2" value="重置" onclick="button2Click()"/>
</form>
</body>
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个