我经常使用非常流行的"服务器端"mvc框架,如ASP.NET MVC或Zend Framework for php,Spring for Java等.
其中一些也可用于桌面应用程序开发,但我从未尝试过.
我完全理解设计模式不应该限制实现,它们通常应该提供可以不同实现的想法和通用规则.
现在我正在使用其中一个用于常规桌面应用程序开发的mvc框架(它没有很多教程或一个不错的快速入门),我对mvc范例有一些疑问.这是其中之一:
链接不同视图/控制器的常用方法有哪些?如果我单击一个按钮,该按钮的特殊控制器将调度生成的事件,对模型执行某些操作,更改视图状态.但是如果我需要与另一个视图进行交互呢?就像,当我点击一个按钮时,它会改变一个模型,但我还需要打开另一个窗口或改变另一个窗口的状态(隐藏另一个窗口上的按钮,比方说......),而不改变模型.有什么常见方法可以解决这个问题?我的第一个控制器是否应为第二个控制器(或第二个视图)生成事件?或者第二个控制器是否应该从第一个视图处理事件?
任何语言/框架的一些链接或示例都会非常有用,谢谢!
我对正则表达式不太满意,所以我甚至不知道这个是什么,确切地说:
echo preg_match('/^(([a-zA-Z0-9\x2d]{1,63}\x2e)*[a-zA-Z0-9\x2d]{1,63}){1,254}$/', 'example12345678.com>');
Run Code Online (Sandbox Code Playgroud)
我从Zend Framework的旧版本中获取了它 - 1.5,这已经过时了,在框架的最后一个稳定版本中,这个正则表达式不再出现了.但是,它的行为很奇怪,因为我在官方php资源中找不到任何文档说明或向后不兼容的注释.
问题是在PHP 5.2.*它工作正常:返回0.在PHP 5.3.10,5.4.0(很可能是5.3.,5.4.我推测)它返回FALSE,意思是"错误".
我的问题是:为什么?什么是错误?它是正则表达式,某种递归或规则歧义吗?如果是这样,为什么它适用于PHP 5.2?
有趣的是,如果我改变"example12345678.com>"到"example1234567.com>"(使它的一个或多个字符短) - 它开始工作,并返回0.如果我将其更改为"123123123123123123123123123"它也能工作,并返回1 .
UPD:不知道是否重要,但这里的pcre版本是8.02(php 5.2)vs 8.12(php 5.3)
UPD2:我确实理解它的用途......或多或少......现在让任何工作都没有问题.正如我所说 - Zend_Validate_*更新解决了它.我会用其他的话来描述我的担忧:
比方说,我升级了一个重要的软件,使得php5.2> php5.3切换.我试图找到有关我可能遇到的所有问题的信息(主要是通过阅读本文:http://php.net/manual/en/migration53.php).该软件有点陈旧,但它并不古老,例如Zend Framework可能是1.5版本.我检查/修补/分析并修复每个bc中断和不推荐使用的功能.甚至我的单元测试运行正常.
令我惊讶的是,问题中描述了什么.(确切地说,Zend_Validate_Hostname会抛出异常).所以现在我想知道为什么我在升级时错过了这个,更重要的是,我是否应该在应用程序中重新检查所有'preg_match'(以及其他PCRE利用函数),尝试各种可想象的输入数据以尝试找到类似的"错误修复" ".
如果是"错误修复".因为它看起来像一个新的bug - 它曾经在php5.2中按预期工作,不再起作用了.
希望得到一些线索来缩小搜索范围.