]> granicus.if.org Git - php/commitdiff
Currently we cannot support static ctor/dtor
authorMarcus Boerger <helly@php.net>
Tue, 2 Sep 2003 13:26:25 +0000 (13:26 +0000)
committerMarcus Boerger <helly@php.net>
Tue, 2 Sep 2003 13:26:25 +0000 (13:26 +0000)
Zend/zend_API.c
Zend/zend_compile.c

index ead407f9e7feff6e324fadb00dd1d80db475da4b..27931dd51f50095f371d3a95fea4475c7dd98c96 100644 (file)
@@ -1283,9 +1283,15 @@ int zend_register_functions(zend_class_entry *scope, zend_function_entry *functi
                scope->clone = clone;
                if (ctor) {
                        ctor->common.fn_flags |= ZEND_ACC_CTOR;
+                       if (ctor->common.fn_flags & ZEND_ACC_STATIC) {
+                               zend_error(error_type, "Constructor %s::%s cannot be static", ctor->common.scope->name, ctor->common.function_name);
+                       }
                }
                if (dtor) {
                        dtor->common.fn_flags |= ZEND_ACC_DTOR;
+                       if (dtor->common.fn_flags & ZEND_ACC_STATIC) {
+                               zend_error(error_type, "Destructor %s::%s cannot be static", dtor->common.scope->name, dtor->common.function_name);
+                       }
                }
        }
        return SUCCESS;
index 3f1f0917d768a233422311cb2c9c15cce3296c7d..0e16ed9fb61511dbbc65a17f68a341d10530f433 100644 (file)
@@ -2277,9 +2277,15 @@ void zend_do_end_class_declaration(znode *class_token, znode *parent_token TSRML
 
        if (ce->constructor) {
                ce->constructor->common.fn_flags |= ZEND_ACC_CTOR;
+               if (ce->constructor->common.fn_flags & ZEND_ACC_STATIC) {
+                       zend_error(E_COMPILE_ERROR, "Constructor %s::%s cannot be static", ce->name, ce->constructor->common.function_name);
+               }
        }
        if (ce->destructor) {
                ce->destructor->common.fn_flags |= ZEND_ACC_DTOR;
+               if (ce->destructor->common.fn_flags & ZEND_ACC_STATIC) {
+                       zend_error(E_COMPILE_ERROR, "Destructor %s::%s cannot be static", ce->name, ce->destructor->common.function_name);
+               }
        }
 
        ce->line_end = zend_get_compiled_lineno(TSRMLS_C);