用 JSON 处理缓存

Posted on 11th November 2006 by Nio in AJAX, Cache, 程序人生

来自 IBM developerWorks 的《用 JSON 处理缓存》:

数据验证是每个企业 Web 应用程序中最富于挑战性、日新月异的部分。通常验证元数据会使 JavaScript 模块中混入服务器端代码。在本文中,您将了解如何在服务器代码的帮助下将元数据缓存在客户端的优秀方法,服务器代码将提供 JSON(JavaScript Object Notation)形式的字符串化元数据。这种方法还允许以类似 Ajax 的方式来处理多值和多组属性。

感冒

Posted on 8th November 2006 by Nio in 日常生活

这一段时间,周围的人都相继感冒,先是 shxll,然后是 Jeanny,Yuanyuan,今天终于轮到我了。有些难受,但精神还不错,只是想睡觉而已 ;) 最遗憾的是我必须远离宝宝,怕传染他。昨晚我戴上口罩,想着这样还能和他玩玩,没想到这小子直哭,非要让我把口罩去掉。哎~~没办法,只能不抱他了。希望赶快好起来!

PHP 5.2 自带的 Filter

Posted on 4th November 2006 by Nio in 程序人生

今天看了 PHPWomen 的一篇 BLOG --Filter and PHP 5.2 才知道 PHP 已经自带有 Filter 了,之前是需要自己手动安装扩展,现在是默认就提供了。手册中也已经提供了 Filter 函数库的相关函数说明。Zend Developer Zone 上也已经有了一篇相关的教程--PHP Built in Input filtering

用法其实很简单,只需要知道一些常量就可以了,例如:


<?php
$age filter_input(INPUT_POST'age'FILTER_VALIDATE_INT);
if (is_null($age)) {
    echo "The 'age' field is required.<br />";
} elseif ($age === FALSE) {
    echo "Please enter a valid age.<br />";
} else {
    echo "Welcome.<br/>";
}
?>

filter_input() 对 POST 过来的数据(使用常量 INPUT_POST)$_POST['age'] 进行过滤,检测其是否为整数(使用常量 FILTER_VALIDATE_INT),如果过滤通过,则返回 true,否则返回 null 或 false,返回 null 表示没有 $_POST['age'] 这个变量,返回 false 表示过滤未通过。

如果提交过来的数据很多,使用 filter_input() 就会变得麻烦,这时可以选择 filter_input_array() ,将过滤规则设置作为数组传入,例如:


<?php
$defs = array(
    'name'       => array('filter'=>FILTER_SANITIZE_STRING,
                    'flags' => FILTER_FLAG_ENCODE_HIGH|FILTER_FLAG_ENCODE_LOW),
    'email'      => FILTER_VALIDATE_EMAIL,
    'homepage'   => FILTER_VALIDATE_URL,
    'age'        => array(  'filter' => FILTER_VALIDATE_INT,
                            'options'=> array('min_range'=>7'max_range'=>77)),
    'income'     => FILTER_VALIDATE_FLOAT,
    'favourites' => array(
                        'filter' => FILTER_SANITIZE_STRING,
                        'flags'  => FILTER_REQUIRE_ARRAY
                    ),
          );
 
$input filter_input_array(INPUT_POST$defs);
 
if ($input['age'] === FALSE) {
    exit("You must be between 7 and 77 years old.");
}
 
if (is_null($input['favourites'])) {
    exit("You have to choose two or more languages.");
}
 
if (!in_array('PHP'$inputs['favourites'])) {
    exit("You don't like PHP!");
}
?>

如果还觉得过滤之后的处理判断太麻烦的话,你还可以自己定义一个函数来自动完成,亦或者将 Filter 封装到一个类中,实现 IoC。总之,有了这个内建的 Filter 之后,使得数据过滤方便了许多。

Practical PHP events: The Java way

Posted on 3rd November 2006 by Nio in 程序人生

Practical PHP events: The Java way

This article introduces a PHP implementation of the Java event schema. The implementation demonstrates how to use the robust and typed Java-like events in PHP.

In my previous article I summarized event system definitions and showed an example of PHP event model, which is built with the call_user_func() function. This acticle expands the subject by introducing an advanced PHP event model that is based on sender/eventObject/listener collaboration, which was popularized by the Java world. [....]