- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Zend Framework常用校验器详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例讲述了Zend Framework常用校验器。分享给大家供大家参考,具体如下:
Date日期校验器 。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
require_once
'Zend/Validate/Date.php'
;
function
c_date(
$date
){
$validator
=
new
Zend_Validate_Date();
if
(
$validator
->isValid(
$date
)){
echo
"输入的日期格式:"
;
echo
$date
.
"有效!<p>"
;
}
else
{
echo
"输入的日期格式:"
;
echo
$date
.
"无效!<p>"
;
}
}
$date1
=
"2008-02-15"
;
$date2
=
"2008-02-31"
;
$date3
=
"02-15-2008"
;
c_date(
$date1
);
c_date(
$date2
);
c_date(
$date3
);
|
结果:
输入的日期格式:2008-02-15有效! 。
输入的日期格式:2008-02-31无效! 。
输入的日期格式:02-15-2008无效! 。
点评:源码解析 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public
function
isValid(
$value
)
{
if
(!
is_string
(
$value
) && !
is_int
(
$value
) && !
is_float
(
$value
) &&
!
is_array
(
$value
) && !(
$value
instanceof
Zend_Date)) {
$this
->_error(self::INVALID);
return
false;
}
$this
->_setValue(
$value
);
if
((
$this
->_format !== null) || (
$this
->_locale !== null) ||
is_array
(
$value
) ||
$value
instanceof
Zend_Date) {
require_once
'Zend/Date.php'
;
if
(!Zend_Date::isDate(
$value
,
$this
->_format,
$this
->_locale)) {
if
(
$this
->_checkFormat(
$value
) === false) {
$this
->_error(self::FALSEFORMAT);
}
else
{
$this
->_error(self::INVALID_DATE);
}
return
false;
}
}
else
{
if
(!preg_match(
'/^\d{4}-\d{2}-\d{2}$/'
,
$value
)) {
$this
->_format =
'yyyy-MM-dd'
;
$this
->_error(self::FALSEFORMAT);
$this
->_format = null;
return
false;
}
list(
$year
,
$month
,
$day
) = sscanf(
$value
,
'%d-%d-%d'
);
if
(!
checkdate
(
$month
,
$day
,
$year
)) {
$this
->_error(self::INVALID_DATE);
return
false;
}
}
return
true;
}
|
InArray数组包含校验器 。
如果内容包含在数组中将返回True,否则返回False.
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php
require_once
'Zend/Validate/InArray.php'
;
function
c_array(
$n
){
$temp
=
array
(
"北京"
,
"上海"
,
"天津"
,
"重庆"
);
$validator
=
new
Zend_Validate_InArray(
$temp
);
if
(
$validator
->isValid(
$n
)){
echo
"指定的内容:"
;
echo
$n
.
",存在于指定数组中!<p>"
;
}
else
{
echo
"指定的内容:"
;
echo
$n
.
",不存在于指定数组中!<p>"
;
}
}
$city1
=
"北京"
;
$city2
=
"重庆"
;
$city3
=
"郑州"
;
c_array(
$city1
);
c_array(
$city2
);
c_array(
$city3
);
|
结果:
指定的内容:北京,存在于指定数组中! 。
指定的内容:重庆,存在于指定数组中! 。
指定的内容:郑州,不存在于指定数组中! 。
Regex正则匹配校验器 。
通过使用正则表达式,再加上合理使用本校验器,几乎可以实现所有的校验规则.
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?php
require_once
"Zend/Validate.php"
;
function
c_rege(
$v
){
$pattern
=
array
(
"/ab{2,}/"
);
if
(Zend_Validate::is(
$v
,
"Regex"
,
$pattern
)){
echo
"<font color=\"#006600\">指定的内容:"
;
echo
$v
.
"<p>符合定义的正规规则!</font>"
;
echo
"<p>"
;
}
else
{
echo
"<font color=\"#ff0000\">指定的内容:"
;
echo
$v
.
"<p>不符合定义的正规规则!</font>"
;
echo
"<p>"
;
}
}
$temp1
=
"ab"
;
$temp2
=
"abb"
;
$temp3
=
"abbb"
;
c_rege(
$temp1
);
c_rege(
$temp2
);
c_rege(
$temp3
);
|
结果:
指定的内容:ab 。
不符合定义的正规规则! 。
指定的内容:abb 。
符合定义的正规规则! 。
指定的内容:abbb 。
符合定义的正规规则! 。
点评:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public
function
__construct(
$pattern
)
{
if
(
$pattern
instanceof
Zend_Config) {
$pattern
=
$pattern
->toArray();
}
if
(
is_array
(
$pattern
)) {
if
(
array_key_exists
(
'pattern'
,
$pattern
)) {
$pattern
=
$pattern
[
'pattern'
];
}
else
{
require_once
'Zend/Validate/Exception.php'
;
throw
new
Zend_Validate_Exception(
"Missing option 'pattern'"
);
}
}
$this
->setPattern(
$pattern
);
}
|
构造函数初始化私有属性, 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public
function
isValid(
$value
)
{
if
(!
is_string
(
$value
) && !
is_int
(
$value
) && !
is_float
(
$value
)) {
$this
->_error(self::INVALID);
return
false;
}
$this
->_setValue(
$value
);
$status
= @preg_match(
$this
->_pattern,
$value
);
if
(false ===
$status
) {
$this
->_error(self::ERROROUS);
return
false;
}
if
(!
$status
) {
$this
->_error(self::NOT_MATCH);
return
false;
}
return
true;
}
|
进行验证工作.
自定义校验器编写 。
继承Zend_Validate_Interface接口实现用户自定义校验器.
代码案例,功能判断指定数值是否为3的倍数.
接口代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Validate
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Interface.php 24593 2012-01-05 20:35:02Z matthew $
*/
/**
* @category Zend
* @package Zend_Validate
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface
Zend_Validate_Interface
{
/**
* Returns true if and only if $value meets the validation requirements
*
* If $value fails validation, then this method returns false, and
* getMessages() will return an array of messages that explain why the
* validation failed.
*
* @param mixed $value
* @return boolean
* @throws Zend_Validate_Exception If validation of $value is impossible
*/
public
function
isValid(
$value
);
/**
* Returns an array of messages that explain why the most recent isValid()
* call returned false. The array keys are validation failure message identifiers,
* and the array values are the corresponding human-readable message strings.
*
* If isValid() was never called or if the most recent isValid() call
* returned true, then this method returns an empty array.
*
* @return array
*/
public
function
getMessages();
}
|
要实现其中的两个方法,一个是isValid(),一个是getMessages() 。
实现代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<?php
require_once
"Zend/Validate/Interface.php"
;
class
MyValidator
implements
Zend_Validate_Interface{
protected
$_messages
=
array
();
public
function
isValid(
$value
){
$this
->_messages =
array
();
$requirement
= !(
$value
%3);
if
(!
$requirement
){
$this
->_messages[] =
"'$value'不能被3整除"
;
return
false;
}
return
true;
}
public
function
getMessages(){
return
$this
->_messages;
}
}
function
c_n_3(
$n
){
$validator
=
new
MyValidator();
if
(
$validator
->isValid(
$n
)){
echo
"指定的数值:"
;
echo
$n
.
",是3的倍数!<p>"
;
}
else
{
echo
"指定的数值:"
;
echo
$n
.
",不是3的倍数!<p>"
;
echo
"失败的消息为:<p>"
;
foreach
(
$validator
->getMessages()
as
$message
) {
echo
"$message<p>"
;
}
}
}
$num1
= 5;
$num2
= 6;
$num3
= 8;
c_n_3(
$num1
);
c_n_3(
$num2
);
c_n_3(
$num3
);
|
结果:
指定的数值:5,不是3的倍数! 。
失败的消息为:
'5'不能被3整除 。
指定的数值:6,是3的倍数! 。
指定的数值:8,不是3的倍数! 。
失败的消息为:
'8'不能被3整除 。
点评:
这里通过isValid()方法来设置属性信息,通过getMessages()方法来获取错误消息。错误消息是一个数组,通过foreach()方法来遍历读取.
希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助.
最后此篇关于Zend Framework常用校验器详解的文章就讲到这里了,如果你想了解更多关于Zend Framework常用校验器详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
嗨,我有一个包含此代码的 Zend 表单 $field = new Zend_Form_Element_Submit('submit'); $field->setAttrib('class', 'bt
我现在正在尝试使用 zend expressive 并研究如何处理数据库。我在看this ,但不清楚。我使用 composer 安装 zend-db,它提到在 dependencies.global.
我已经通过 Zend auth 创建了一个登录系统,这里是代码 // userAuthentication public function authAction(){ $reque
好的,所以我对 Zend 比较陌生。我已经创建了一个新的应用程序并开始构建基于 a guide 的身份验证系统.但是,服务器正在踢出一个内部服务器错误。 检查 PHP 错误日志后,我得到以下两个错误:
编辑:: 问题是由 Zend 路由引起的,请检查更新 我正在使用 xml 文件进行导航。 编辑::以下代码来自layout.phtml文件 $config = new Zend_Config_Xml(
我想将变量从 Controller 传递到表单。如何实现?谁能帮我解决这个问题。 谢谢。 最佳答案 只是一个活生生的例子: class Admin_Form_Product extends Admin
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我使用默认 Zend_Rest_Route 来生成 Rest 路由: 所以鉴于我只是把 resources.router.routes.rest.type = Zend_Rest_Route在 app
是否存在类似于 Zend Validator Identical 的 Zend Filter? 我应该过滤 input=='test' 的情况 $el->addFilter('Identical','
在/application 文件夹中创建了几个文件夹(例如表单和模型),然后开始向这些文件夹添加类之后,如何使这些类的代码自动完成在我的各种其他文件(例如我的文件)中可用IndexController
我正在尝试删除隐藏表单元素上的默认装饰器。默认情况下,隐藏元素显示如下: Hidden Element Label (if I had set one) 我不希望隐藏元素占用页面上的空间。我想删除所
我是框架新手,但我在安装 zend 1.x 版本等方面没有任何困难。但是ZF2真的搞不懂......任何资源告诉我使用 zend 工具创建项目,即 bin 目录中的 zf.bat 或 zf.sh,但与
我想使用装饰器将下面的 Zend_Form 格式化为表格,在第一列中放置描述并 Zend_Form_Element_Radio 的选项在第二列中和 在每一行中添加 2 个选择,您可以在稍后的 html
当您查看 在下面的标记中,您会看到有一个带有 id 地址标签的 dt 和以下 dd,我想删除这些但保留 字段集。 要添加显示组,我在其中使用了这个 $this->addDisplayGroup(arr
我已经阅读了所有关于路由和 Zend 文档的帖子,但我仍然无法解决这个问题。 我有一个包含两个模块的多语言应用程序:default 和 admin。语言选择工作正常(在 Controller rout
/* Form Elements & Other Definitions Here ... */ $this->setAction("auth") ->setMethod("post")
我正在按照官方教程在 Zend 服务器上部署示例 Zend 应用程序。无论我部署什么,我唯一可以访问的是 hello world 页面(Hello world 打招呼)。 如何访问真实应用程序? ho
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
在 Zend 中使用命名空间的最佳实践是什么? 如何管理存储库、服务等的命名空间? 我在 Zend 文档 here 中找到了一个通用的目录结构,但它没有描述在哪里放置存储库和其他服务! 请将其视为 M
我有问题,以下 Zend 表单会引发错误。 问题是"file"元素和使用 setElementDecorators。 class Products_AddForm extends Zend_F
我是一名优秀的程序员,十分优秀!