Archive for the Tag: 'PHP'

Microsoft/Web

如果你像我一样使用Dreamhost,那么一定会喜欢它的OneClick Installer。使应用安装完全傻瓜化。Apache也有很多第三方的集成应用来集成Apache,PHP,MySQL等。现在Microsoft也有了这些应用:
Microsoft Web Platform InstallerMicrosoft Web Application Installer

Microsoft于10月份推出了Microsoft Web Platform Installer的beta版及于11月月底推出了RC版,在RC版本上甚至支持了XP和Win2003。Microsoft Web Platform Installer包含的组件有IIS7,Web Dev 2008 Express,SQL2008 Express及不可或缺的.Net Framework。但还有一个很重要的点就是支持PHP!

一些著名的PHP应用已经有了Application的Installer。比如Drupal,phpBB,WordPress等等。其实Microsoft一直在帮助改进PHP在Windows和IIS上的运行。

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

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.

Phalanger 2.0 Beta3 Release

虽然微软已经为PHP开发了IIS的FastCGI, 但是Phalanger也可以是PHPer的另外一种Windows上的选择. 今天Phalanger发布了最新的Beta3版本, 这个版本中, Generic, LINQ的的支持都基本没问题了, 最基本的Namespace的使用也完全没有问题了.

此次发布中还包括了一个PersonalWebStartKit的Template, 是原来C#等语言实现的PHP实现. 看上去很不错.phppersonalwebstarterkit