常量的合并策略比较简单,如果父类与子类冲突时用子类的,不冲突时则将父类的常量合并到子类。
static void do_inherit_class_constant(zend_string *name, zval *zv, zend_class_entry *ce, zend_class_entry *parent_ce)
{
//父类定义的常量在子类中没有定义
if (!zend_hash_exists(&ce->constants_table, name)) {
...
_zend_hash_append(&ce->constants_table, name, zv);
}
}