msgbartop
PHP语言, PHP扩展, Zend引擎相关的研究,技术,新闻分享 – 左手代码 右手诗
msgbarbottom

23 Sep 11 我对PHP5.4的一个改进

插播个消息, 今天, 我终于获得了Zend的编辑权限, Zend是PHP源代码中最为核心的部分, 也是最为敏感的地方, 对于这部分的权限控制的一直很严格. 但也是我加入PHP开发组以后, 一直想得到的权限. :)

好了, 言归正传, 今天对PHP5.4的Zend引擎做了一个改进, 改进了参数不兼容的报警信息. 具体的来说:

对于如下的例子:

<?php
class Sub implements ArrayAccess {
    public function offsetSet() {
    }
}
?>

在目前大家一定会得到类似如下的错误信息:

PHP Fatal error:  Declaration of Sub::offsetSet() must be compatible
with that of ArrayAccess::offsetSet()

这里有个问题, 错误信息并没有告诉我们, 正确的参数应该是什么样子, 我们除了去查手册(或者看源代码), 没办法得知.

于是, 在开发组经过提议, 讨论之后, 我今天做了一个改进, 改进之后, 将会得到如下的错误信息:

Fatal error: Declaration of Sub::offsetSet() must be compatible with
ArrayAccess::offsetSet($offset, $value)

当然, 这个对用户自定的类也是有效的, 如下:

<?php
class Foo {
}

Abstract Class Base {
    abstract public function test(Foo $foo, array $bar,
              $option = NULL, $extra = 16777215) ;
}

class Sub extends Base {
    public function test(Foo $foo, array $bar) {
    }
}
?>

将会得到如下的错误信息:

PHP Fatal error:  Declaration of Sub::test() must be compatible with
Base::test(Foo $foo, array $bar, $option = NULL, $extra = 16777215)

reversion: http://svn.php.net/viewvc?view=revision&revision=317206


分享到:



Related Posts:

Tags: , , , ,

26 Responses to “我对PHP5.4的一个改进”

Pages: [3] 2 1 » Show All

  1. hop-pocket |

    改进 不错

  2. PHPer |

    崇拜一下你呗,向你学习

  3. Kyli |

    基本上PHP里你是我的偶像了

  4. funlake |

    这算是小试牛刀。
    好戏应还在后头。
    鼓掌!

  5. joysk |

    表示对大牛的膜拜一下!
    哈哈

  6. rainkid |

    我去http://pecl.php.net/package/yaf下载了最新的版本
    重新编译OK了,非常感谢!

Pages: [3] 2 1 » Show All

Leave a Reply

*