> andi Tue Nov 18 04:25:05 2003 EDT
>
>  Modified files:
>    /ZendEngine2 zend.c zend_builtin_functions.c zend_constants.c
>                zend_errors.h zend_language_parser.y
>  Log:
>  - Add E_STRICT, to be used to warn purists (like Jani :)
>
Is it a good time to dredge up the old topic of making a PHP_DEPALIAS() to
act like PHP_FALIAS() but throw an E_STRICT error saying that the function
has been deprecated?

Here's a patch for review and discussion:


Index: Zend/zend_API.h
===================================================================
RCS file: /repository/ZendEngine2/zend_API.h,v
retrieving revision 1.169
diff -u -r1.169 zend_API.h
--- Zend/zend_API.h     18 Nov 2003 19:18:54 -0000      1.169
+++ Zend/zend_API.h     19 Nov 2003 00:28:55 -0000
@@ -51,6 +51,7 @@
 #define ZEND_NAMED_FE(zend_name, name, arg_info)
ZEND_FENTRY(zend_name, name, arg_info, 0)
 #define ZEND_FE(name, arg_info)
ZEND_FENTRY(name, ZEND_FN(name), arg_info, 0)
 #define ZEND_FALIAS(name, alias, arg_info)
ZEND_FENTRY(name, ZEND_FN(alias), arg_info, 0)
+#define ZEND_DEPALIAS(name, alias, arg_info)           ZEND_FENTRY(name,
ZEND_FN(alias), arg_info, ZEND_ACC_DEPRECATED | ZEND_ACC_PUBLIC)
 #define ZEND_ME(classname, name, arg_info, flags)      ZEND_FENTRY(name,
ZEND_FN(classname##_##name), arg_info, flags)
 #define ZEND_ABSTRACT_ME(classname, name, arg_info)    ZEND_FENTRY(name,
NULL, arg_info, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
 #define ZEND_MALIAS(name, classname, alias, arg_info, flags) \
Index: Zend/zend_compile.h
===================================================================
RCS file: /repository/ZendEngine2/zend_compile.h,v
retrieving revision 1.262
diff -u -r1.262 zend_compile.h
--- Zend/zend_compile.h 10 Nov 2003 16:14:44 -0000      1.262
+++ Zend/zend_compile.h 19 Nov 2003 00:28:55 -0000
@@ -100,6 +100,7 @@
 #define ZEND_ACC_INTERFACE             0x08
 #define ZEND_ACC_ABSTRACT_CLASS        0x10
 #define ZEND_ACC_FINAL_CLASS   0x20
+#define ZEND_ACC_DEPRECATED            0x40

 /* The order of those must be kept - public < protected < private */
 #define ZEND_ACC_PUBLIC                0x100
Index: Zend/zend_execute.c
===================================================================
RCS file: /repository/ZendEngine2/zend_execute.c,v
retrieving revision 1.549
diff -u -r1.549 zend_execute.c
--- Zend/zend_execute.c 10 Nov 2003 16:23:12 -0000      1.549
+++ Zend/zend_execute.c 19 Nov 2003 00:28:55 -0000
@@ -2513,6 +2513,10 @@
                NEXT_OPCODE(); /* Never reached */
        }

+       if (EX(function_state).function->common.fn_flags &
ZEND_ACC_DEPRECATED) {
+               zend_error(E_STRICT, "%s() has been deprecated and may be
removed in a future version.",
EX(function_state).function->common.function_name);
+       }
+
        zend_ptr_stack_n_push(&EG(argument_stack), 2, (void *)
EX(opline)->extended_value, NULL);

        EX_T(EX(opline)->result.u.var).var.ptr_ptr =
&EX_T(EX(opline)->result.u.var).var.ptr;
Index: main/php.h
===================================================================
RCS file: /repository/php-src/main/php.h,v
retrieving revision 1.200
diff -u -r1.200 php.h
--- main/php.h  3 Nov 2003 14:12:45 -0000       1.200
+++ main/php.h  19 Nov 2003 00:28:55 -0000
@@ -354,6 +354,7 @@
 #define PHP_NAMED_FE   ZEND_NAMED_FE
 #define PHP_FE                 ZEND_FE
 #define PHP_FALIAS             ZEND_FALIAS
+#define PHP_DEPALIAS   ZEND_DEPALIAS
 #define PHP_ME          ZEND_ME

 #define PHP_MODULE_STARTUP_N   ZEND_MODULE_STARTUP_N

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to