|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
怎么培养啊别光说不练啊,好,比如新人入门自己步是配置环境,虽然现在都有很多的集成环境,但是真实的体验下配置环境还是会有很多帮助,不论是你以后工作还是在真实的linux下开发。项目中数据考证在web使用中特别显得主要。上面来给人人先容下ZenTaoPHP框架的数据考证机制。
1、起首来断定一个成绩,即考证的划定规矩放在甚么中央?
mvc程序中,每层都能够放考证划定规矩。好比良多的表单考证,会主动依据用户的输出举行考证,然后赐与提醒。那末数据考证放在哪一层呢?这个成绩收集上人人有良多的争议。有的人次要放在view这一层,有的则主意放在control层。禅道框架选择了model层。
为何如许做呢?由于model层是最低的一层,一切的数据操纵,都要经由model来举行处置。那末只需在这一关把数据考证做好,就能够包管数据的正确和平安。固然,框架的用户,能够同时在前端加上js的考证,和model层的考证不会抵触的。上面来看下怎样利用禅道的数据过滤机制。
禅道的数据过滤分为两个部分,一个是数据修改,一个是数据考证。这个是受php的filter扩大启示,它内里就是分为了这两个部分。先来看数据修改的例子:
2、数据修改:
$bug=fixer::input(post)
->add(openedBy,$this->app->user->account)
->add(openedDate,$now)
->setDefault(project,story,task,0)
->setDefault(openedBuild,)
->setIF($this->post->assignedTo!=,assignedDate,$now)
->setIF($this->post->story!=false,storyVersion,$this->loadModel(story)->getVersion($this->post->story))
->specialChars(title,steps,keyword)
->cleanInt(product,module,severity)
->join(openedBuild,,)
->remove(files,labels)
->get();
起首,是挪用fixer这个类的input办法,它的参数post暗示是从$_POST变量中猎取数据。
紧接着的两行add(),是向数据中增添两个变量。然后前面的两行setDefault则是暗示,当这个变量没有传值的时分,设成默许的值。
接上去是两行setIF。setIF共有三个参数,第一个是判别前提,前面两个分离是key和value。也就是当前提为true的时分,设置$key=$value。
上面的spechialchars则暗示对这三个字段举行htmlspecialchars处置
最初,还必要把两个不必要的变量往失落,利用remove。
经由过程get办法就能够失掉一个已经由修正的完全的数据汇合。这个汇合已能够筹办进库了。让我们来看下数据是怎样考证的。
3、数据反省
这句sql拔出语句经由过程data办法,将修改过的数据传送给dao工具,然后经由过程autoCheck()对其举行主动反省。autoCheck会依据数据库内里字段的范例,长度举行判别。假如范例不合错误,大概长度不合错误,会主动纪录毛病。然后前面挪用了batchCheck()办法,对一批字段举行非空的考证。固然也能够经由过程check()办法对单个字段举行考证。
if(dao::isError())die(js::error(dao::getError()));对,就是如许一句话,假如dao::isError(),则实行getError()办法,然后将其兼并成js的字符串,以告诫框的情势弹出。实行了getError()以后,一切的毛病被清空,如许不会影响下次的实行。
理解动态语言的概念,运做机制,熟悉PHP语法 |
|