最新消息:

Phalcon之添加自定义过滤器

ZmmFly 3203浏览 1评论

写应用就得接触数据…接触数据就得判断数据是否安全…

于是就有了判断、过滤。。。

Phalcon默认提供了string、email、int、float、alphanum、striptags、trim、lower、upper这几种类型的过滤方法,但若应用涉及到更复杂的数据就不够用了。。。

Phalcon这么强大的框架怎么会出现这种问题了?

先编辑下配置,将放过滤器的文件夹加入到注册文件夹中

//File:/path/app/config/config.php
<?php
return new \Phalcon\Config(array(
    'database'    => array(
        'adapter'     => 'Mysql',
        'host'        => 'localhost',
        'username'    => '',
        'password'    => '',
        'dbname'      => '',
        ),
    'application' => array(
        'controllersDir' => __DIR__ . '/../../app/controllers/',
        'modelsDir'      => __DIR__ . '/../../app/models/',
        'viewsDir'       => __DIR__ . '/../../app/views/',
        'pluginsDir'     => __DIR__ . '/../../app/plugins/',
        'libraryDir'     => __DIR__ . '/../../app/library/',
        'cacheDir'       => __DIR__ . '/../../app/cache/',
        'extension'      => __DIR__ . '/../../app/library/extension/',
        'other'          => __DIR__ . '/../../app/library/other/',
        'baseUri'        => '/',
        ),
));
//File:/path/app/config/loader.php
 <?php
$loader->registerDirs(
    array(
        $config->application->controllersDir,
        $config->application->modelsDir,
        $config->application->libraryDir,
        $config->application->customVoltf,
        $config->application->extension,
        $config->application->other,
    )
);

/app/library/extension/中创建md5Filter.php

<?php
/**
*
*/
class md5Filter// extends AnotherClass
{
    public function filter($value)
    {
        $result = array();
        $time = preg_match('/^[0-9a-zA-Z]{16,32}$/', $value, $result);
        if ($time > 0) {
            return $result[0];
        }else{
            return false;
        }
    }
}
?>

/app/config/services.php中替换原过滤服务

<?php
$di->set('filter',function(){
    $filter = new \Phalcon\Filter();

    //用户名过滤
    $filter->add('uname',new UnameFilter());

    //密码过滤
    $filter->add('pwd',new PwdFilter());

    //MD5过滤
    $filter->add('md5',new md5Filter());

    return $filter;
});
//上面的用户名、密码是我自己另外添加的,后面会提供下载

在控制器中使用$this->request->getPost('tf','md5');测试,是不是通过呢?

按照这个模板,添加过滤器是非常容易的。

其实使用匿名函数也是可以的,例如:

<?php
$di->set('filter',function(){
    $filter = new \Phalcon\Filter();
    $filter->add('test',function($value){return $value});
    return $filter;
});
//(匿名函数的第一个参数即为需要过滤的值

当然,上面的是最简单的例子,如果需要处理更复杂的数据,匿名函数的方式就有点不够用了。。。

 

附件:

Phalcon-Filter

转载请注明:神奇海域 » Phalcon之添加自定义过滤器

发表我的评论
取消评论

Protected by WP Anti Spam

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. 代码大神,过来膜拜一下
    阿塔历斯评论于10年前 (2014-06-08)回复