过节了

今年的这个节还过得不错,甜蜜的月饼,不错的牛排。今天路过HP金牌服务,问了下屏幕的问题,说需要检测就可以跟我换屏了。十一来了把这个事给结了。

本来计划这个月发布新本的,看来又不能发布了。就在前几天,有个突然的想法出现在我脑海里,我这几天一直在琢磨这个,如果不把这个想清楚,我是没心思来继续开发的。而且MediaTemple的Django容器已经开始Beta测试了。希望这个东西能在年底上线。

强大的UI库

在最新的一个版本中,我不再做一个后台管理界面,于是我有将前后台结合的想法。如果这样的话,换肤就是一个问题,怎么保证管理风格不变,再就是怎样提供更方便的操作方式,而且,页面设计也是问题。

Ext对我来说,好像是这个问题的完美解决方案。优秀的UI设计、完善组件、丰富的数据载入、弹出层实现界面无关性。而且,在最新版本中,可以使用多种JS库,包括jQuery。而且可以自己根据需要构建库文件,让JS文件达到最小。

不过从看Ext的API文档,好像有点复杂。不过有学习的价值。 

使用什么方式生成xml

我最近在强化feed部分,由于Zend Framework中的生成feed的的模块太糟糕,我是说实现,通过传递字典来生成所有的东西。我原来对feed的就是简单的实现,不考虑什么别的。现在我要来完善这个东西。在实现这个东西的时候,到底是使用dom和生成xml,还是直接通过连接字符串来生成xml之间选择。也许xmlwriter也是个不错的选择,于是我通过phpunit中的PHPUnit_Extensions_PerformanceTestCase,作了性能测试,如果直接用字符串连接会快40%。所以,我还是决定用字符串连接算了,dom的用法真是烦琐,不再封装一下,真的会搞死人。等完成了再用字符和xmlwriter做下比较。

重新写了侧边栏

这几天我把侧边栏重新写了下,这个实现用于更方便扩展,在下次发布代码的时候会有一个例子来说明怎么写一个侧边栏,而且,在系统内部会内置默认的侧边栏。

PHPUnit入门(二)

如果你已经安装好PHPUnit了,那么就继续开始吧。

<?php
require_once 'PHPUnit/Framework.php';
 
class ArrayTest extends PHPUnit_Framework_TestCase
{
    protected $fixture;
 
    protected function setUp()
    {
        // Create the Array fixture.
        $this->fixture = array();
    }
 
    public function testNewArrayIsEmpty()
    {
        // Assert that the size of the Array fixture is 0.
        $this->assertEquals(0, sizeof($this->fixture));
    }
 
    public function testArrayContainsAnElement()
    {
        // Add an element to the Array fixture.
        $this->fixture[] = 'Element';
 
        // Assert that the size of the Array fixture is 1.
        $this->assertEquals(1, sizeof($this->fixture));
    }
}
?>

这是一个测试文件,注意文件名叫ArrayTest.php。在命令行运行phpunit ArrayTest.php,如果显示ok的话,就恭喜你了。setUp()是每次调用测试用例之前调用的方法,用于重置一些变量,方便测试。其实上面的东西照着手册就可以做到了,所以这并不是重点。对于一个项目来说,可能有许多模块,怎么组织这些模块测试就成了一个问题,除非你把所有的东西写在一起,其实那样也挺有难度的Laughing。所以在PHPUnit测试里面有帮你组织测试的功能。代码我就不帖了,在这。如果你得懂,就不用再继续看下去了。

在AllTests中定义了两个静态方法,Framework_AllTest也是同样的,区别在于,Framework_AllTest添加了ArrayTest.php这个测试文件。

在AllTests的开始定义了一个常量,并在类的下方对这个常量进行了判断。假如你是从这个文件开始运行的,那个就会定义这个常量,通过常量的判断运行main()这个静态方法,而这个静态方法调用suite()方法,来加载测试套件。这样就能给测试用例很大的灵活性,你可以一起跑所有的测试,也可以只测试某一个用例文件。

相关资料:

PHPUnit官方网站

PHPUnit手册地址 中文版(有点老了)

我会在将来发布的代码中加入测试 

PHPUnit入门(一)

废话就不多说了。也许你知道了单元测试,但又不知道怎么开始,这是个常见的问题,因为我也碰到过,希望下面这个说明会对有帮助,以windows平台为例。

运行PHPUnit需要PHP5的命令行,所以这里需要php的解释器。这里可能有个小麻烦,每个人的环境不一样,像我自己的用的一个集成环境就没有php解释器,所以可以根据自己的需要安装,可以去官方网站下一个最新的。常见的安装方法是通过PEAR Install来安装。一般安装php后可以还没有安装pear,但有一个脚本会自行安装pear。在php5的安装目录下,运行go-pear。这样会有一个向导安装pear,一直回车吧。如果安装成功在php5的安装目录下面会有一个pear.bat文件,这样就可以继续安装PHPUnit了。

pear channel-discover pear.phpunit.de

pear install phpunit/PHPUnit

运行上面命令后,会自动安装PHPUnit,安装完毕后在PHP5的安装目录下会有phpunit.bat这个文件,这样你就有了phpunit的命令行工具,在默认情况下PHP5的安装目录会自动加入到PATH环境变量中。