我们知道,PHP的变量是弱类型,不需要添加数据类型,PHP也能自动识别。
但我在看zend framework的代码时发现,class里的function的传值参数,如果是实例变量的话,前面会添加一个该实例的类名,如: public function __construct(Zend_Log_Writer_Abstract $writer = null),表明$writer是Zend_Log_Writer_Abstract这个抽象类的数据类型。我想请教一下各位高手,这样定义了之后,是不是说如果$writer的数据类型不是Zend_Log_Writer_Abstract的话,PHP会报错,还是说,这样写仅仅是方便代码查看,并无实际作用?

解决方案 »

  1.   

    对于
     public function __construct(Zend_Log_Writer_Abstract $writer = null)
    如果$writer的数据类型不是Zend_Log_Writer_Abstract或其子类的话,PHP会报错这种用法只可在类中在工厂法中,作为数据载体的对象将依次通过加工类对象组。如果不限定数据类型的话,加工类的需要书写大量判别代码,以决定是否可以被加工