Archive for the 'PHP' Category

PHP, Phalanger, DLR, Silverlight

Phalanger在上个月发布过一个新版本, 新特性除了自身的增强以外主要包括

  • VS 2008 (支持VS shell方式) 集成
  • Win Form designer
  • Silverlight 1.1 Support (Although it’s Silverlight 2.0 Beta now.)

其实某种程度上来说VS 2008的集成和Winform designer都不是太特别. 因为开发VS 2008的package要比以前容易不少. 但Silverlight需要DLR的支持. 所以要实现PHP的DLR. 不过目前Phalanger中的PHP DLR并不能使PHP与其他DLR语言协作, 也就是PHP并不能和JS一起工作完成同一个Silverlight应用. 其实一月份的Lang.NetThomas已经Demo过了.

我个人还是挺不习惯PHP这种写代码的方式.

Technorati Tags:

Zend Studio for Eclipse

试用过Beta版本Neon, 总体来讲真的不错. 不过即使有$100的off, 还是要$299. 可以买个不错的手机了. 所以还是用用原始的编辑工具吧. 虽然有那个PDT, 不过那东西实在太差了…

BDD in PHP

习惯了UnitTest的思路,在第一次看到PHPSpec的时候还真是不怎么习惯. 但这个东西确实很好的实现了所谓的BDD (Behavior-Driven Development). 今天看到PHPUnit也会支持BDD了.

还没有真正尝试过BDD, 准备试试.

Data Driven Test with PHPUnit3.2

PHPUnit 3.2的一个新特性就是支持DDT。最大的好处就是你在写与数据有关的unit test时可以少写很多代码。所谓DDT就是可以使用某已存在的数据来进行测试。比如在处理输入输出时,如果你改变了转换输入至输出的代码,那么不得不确保所有的输入数据仍是工作正确的。

在没有这个新特性之前,我们可能需要构造好整个输入及整个输出分别作为一个参数来进行assert。这种情况下你需要做大量的没有太多实际意义的代码来进行准备和处理。

而有个该新特性以后则十分方便以数据驱动的方式来进行测试(在.Net中NUnit是没有的,但mstest和xunit都具有这样的特性)。

下面是一个典型的DDT的例子,从PHPUnit的文档中取得:

class DataTest extends PHPUnit_Framework_TestCase
{
public static function provider()
{
return array(
array(0, 0, 0),
array(0, 1, 1),
array(1, 1, 3),
array(1, 0, 1)
);
}

/**
* @dataProvider provider
*/
public function testAdd($a, $b, $c)
{
$this->assertEquals($c, $a + $b);
}
}

这里有3个地方要注意,一个是static的provider方法,一个是@dataProvider的annotation,还有就是testAdd方法是带有参数的(与普通的testcase不同)。

所以此时如果我是对数据库的数据进行DDT的话,那么可以直接从数据库中取得数据后进行测试。这样的DataProvider返回的数据与MSTest中的TestContext有点相似。而除了数据库以外,常见的测试的时候我们常使用excel或csv来做输入输出数据的expect。
class DataTest extends PHPUnit_Framework_TestCase
{
public static function provider()
{
/*
$allresults = array(datarow, datarow, datarow…);
*/
return $allresults;
}

/**
* @dataProvider provider
*/
public function testLogic($datarow)
{
$this->assertEquals($expect, $targetmethod->processlogic($datarow));
}
}

Data Driver Test在自动化测试中相当的有用。所以非常非常高兴看到PHPUnit开始具有越来越丰富的功能,虽然在没有DDT之前也可以使用testsuite来做到,而且实际上PHPUnit中便是以testsuite来做到的。期待PHPUnit3.2的最终发布(当前是RC3)。

PS: 当前已经是3.2.0发布

Zend Studio Neon Beta

Just tried a little. Pretty cool.

1. Really modern IDE (based on Eclipse)
2. Zend Framework support
3. Refactory support (poor…… so far)
4. Debug and Profile
5. PHPUnit
6. PHPDoc
7. SVN and CVS
8. BIRT
9. Other Zend stuffs integration
10. WYSIWYG editor
11. FTP
12. Database

Zend Framework 1.0.0 Release

Cool. ZF作为目前最好的PHP的Framework之一, 理应得到更多的应用. 1.0了, 该出发了.

A Little MySQL Trigger Manage Tool

Unfortunately, there is still no trigger management functionality in PHPMyAdmin. I used to create one during DiggMore development. And I need it again these days. So I rewrite it into a separated archive. Here you can get it: http://binzywu.com/tmp/trigger.zip

Just modify the config.php to set your database information. Hope it’s useful when you need to create trigger in MySQL. Good luck.

PHP for Microsoft Ajax

http://www.codeplex.com/phpmsajax

原理很简单,但用起来有时候还是蛮方便的。