9. Other Changes to Extensions
========================================
+- Reflection:
+ . Numeric value of class, property, function and constant modifiers was
+ changed. Don't filter methods and properties through
+ ReflectionClass::getMethods() and ReflectionClass::getProperties(), or test
+ results of Reflection...::getModifiers(), using hard-coded numeric values.
+ Use corresponding constants instead (e.g. ReflectionMethod::IS_PUBLIC).
+
========================================
10. New Global Constants
========================================
1. Internal API changes
a. php_sys_symlink() and php_sys_link()
b. zend_lookup_class_ex() and zend_fetch_class_by_name()
- c. Function/property flags
+ c. Function/property/class flags
2. Build system changes
a. Unix build system changes
changed to accept optional lower-case class name as zend_string*,
instead of zval*.
- c. Function/property flags changes
+ c. Function/property/class flags changes
- ZEND_ACC_CTOR and ZEND_ACC_DTOR are removed. It's possible to check if
method is a constructor/destructor using the following condition
(func->commpon.scope->constructor == func).
- ZEND_ACC_SHADOW property flag is removed. Instead of creating shadow
clone, now we use the same private property_info, and should also
check property_info->ce (in the same way as with methods).
+ - ZEND_ACC_... flags are re-numbered.
========================
2. Build system changes
/* Common flags | | | */
/* ============ | | | */
/* | | | */
+/* Visibility flags (public < protected < private) | | | */
+#define ZEND_ACC_PUBLIC (1 << 0) /* | X | X | X */
+#define ZEND_ACC_PROTECTED (1 << 1) /* | X | X | X */
+#define ZEND_ACC_PRIVATE (1 << 2) /* | X | X | X */
+/* | | | */
+/* Property or method overrides private one | | | */
+#define ZEND_ACC_CHANGED (1 << 3) /* | X | X | */
+/* | | | */
/* Staic method or property | | | */
-#define ZEND_ACC_STATIC (1 << 0) /* | X | X | */
+#define ZEND_ACC_STATIC (1 << 4) /* | X | X | */
/* | | | */
/* Final class or method | | | */
-#define ZEND_ACC_FINAL (1 << 2) /* X | X | | */
+#define ZEND_ACC_FINAL (1 << 5) /* X | X | | */
/* | | | */
-/* Visibility flags (public < protected < private) | | | */
-#define ZEND_ACC_PUBLIC (1 << 8) /* | X | X | X */
-#define ZEND_ACC_PROTECTED (1 << 9) /* | X | X | X */
-#define ZEND_ACC_PRIVATE (1 << 10) /* | X | X | X */
-/* | | | */
-/* Property or method overrides private one | | | */
-#define ZEND_ACC_CHANGED (1 << 11) /* | X | X | */
+/* Abstarct method | | | */
+#define ZEND_ACC_ABSTRACT (1 << 6) /* X | X | | */
+#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 << 6) /* X | | | */
/* | | | */
-/* Class Flags (unused: 0, 1, 3, 11-18, 21, 25...) | | | */
+/* Class Flags (unused: 15...) | | | */
/* =========== | | | */
/* | | | */
+/* Special class types | | | */
+#define ZEND_ACC_INTERFACE (1 << 0) /* X | | | */
+#define ZEND_ACC_TRAIT (1 << 1) /* X | | | */
+#define ZEND_ACC_ANON_CLASS (1 << 2) /* X | | | */
+/* | | | */
+/* Bound anonymous class | | | */
+#define ZEND_ACC_ANON_BOUND (1 << 3) /* X | | | */
+/* | | | */
/* class is abstarct, since it is set by any | | | */
/* abstract method | | | */
#define ZEND_ACC_IMPLICIT_ABSTRACT_CLASS (1 << 4) /* X | | | */
/* | | | */
-/* Class is explicitly defined as abstract by using | | | */
-/* the keyword. | | | */
-#define ZEND_ACC_EXPLICIT_ABSTRACT_CLASS (1 << 5) /* X | | | */
-/* | | | */
-/* Special class types | | | */
-#define ZEND_ACC_INTERFACE (1 << 6) /* X | | | */
-#define ZEND_ACC_TRAIT (1 << 7) /* X | | | */
-#define ZEND_ACC_ANON_CLASS (1 << 8) /* X | | | */
+/* Class has magic methods __get/__set/__unset/ | | | */
+/* __isset that use guards | | | */
+#define ZEND_ACC_USE_GUARDS (1 << 7) /* X | | | */
/* | | | */
-/* Bound anonymous class | | | */
-#define ZEND_ACC_ANON_BOUND (1 << 9) /* X | | | */
+/* Class constants updated | | | */
+#define ZEND_ACC_CONSTANTS_UPDATED (1 << 8) /* X | | | */
/* | | | */
/* Class extends another class | | | */
-#define ZEND_ACC_INHERITED (1 << 10) /* X | | | */
+#define ZEND_ACC_INHERITED (1 << 9) /* X | | | */
/* | | | */
/* Class extends another class | | | */
-#define ZEND_ACC_UNRESOLVED_PARENT (1 << 11) /* X | | | */
+#define ZEND_ACC_UNRESOLVED_PARENT (1 << 10) /* X | | | */
/* | | | */
/* Class implements interface(s) | | | */
-#define ZEND_ACC_IMPLEMENT_INTERFACES (1 << 19) /* X | | | */
-/* | | | */
-/* Class constants updated | | | */
-#define ZEND_ACC_CONSTANTS_UPDATED (1 << 20) /* X | | | */
+#define ZEND_ACC_IMPLEMENT_INTERFACES (1 << 11) /* X | | | */
/* | | | */
/* Class implements interface(s) | | | */
-#define ZEND_ACC_UNRESOLVED_INTERFACES (1 << 21) /* X | | | */
+#define ZEND_ACC_UNRESOLVED_INTERFACES (1 << 12) /* X | | | */
/* | | | */
/* Class uses trait(s) | | | */
-#define ZEND_ACC_IMPLEMENT_TRAITS (1 << 22) /* X | | | */
+#define ZEND_ACC_IMPLEMENT_TRAITS (1 << 13) /* X | | | */
/* | | | */
/* User class has methods with static variables | | | */
-#define ZEND_HAS_STATIC_IN_METHODS (1 << 23) /* X | | | */
+#define ZEND_HAS_STATIC_IN_METHODS (1 << 14) /* X | | | */
/* | | | */
-/* Class has magic methods __get/__set/__unset/ | | | */
-/* __isset that use guards | | | */
-#define ZEND_ACC_USE_GUARDS (1 << 24) /* X | | | */
-/* | | | */
-/* Function Flags (unused: 4, 5, 17?) | | | */
+/* Function Flags (unused: 25...30) | | | */
/* ============== | | | */
/* | | | */
-/* Abstarct method | | | */
-#define ZEND_ACC_ABSTRACT (1 << 1) /* | X | | */
+/* Immutable op_array (lazy loading) | | | */
+#define ZEND_ACC_IMMUTABLE (1 << 7) /* | X | | */
/* | | | */
-#define ZEND_ACC_FAKE_CLOSURE (1 << 6) /* | X | | */
+/* deprecation flag | | | */
+#define ZEND_ACC_DEPRECATED (1 << 8) /* | X | | */
/* | | | */
-/* method flag used by Closure::__invoke() | | | */
-#define ZEND_ACC_USER_ARG_INFO (1 << 7) /* | X | | */
+/* Function returning by reference | | | */
+#define ZEND_ACC_RETURN_REFERENCE (1 << 9) /* | X | | */
+/* | | | */
+/* Function has typed arguments | | | */
+#define ZEND_ACC_HAS_TYPE_HINTS (1 << 10) /* | X | | */
+/* | | | */
+/* Function has a return type | | | */
+#define ZEND_ACC_HAS_RETURN_TYPE (1 << 11) /* | X | | */
+/* | | | */
+/* Function with variable number of arguments | | | */
+#define ZEND_ACC_VARIADIC (1 << 12) /* | X | | */
+/* | | | */
+/* op_array has finally blocks (user only) | | | */
+#define ZEND_ACC_HAS_FINALLY_BLOCK (1 << 13) /* | X | | */
/* | | | */
/* "main" op_array with | | | */
/* ZEND_DECLARE_INHERITED_CLASS_DELAYED opcodes | | | */
-#define ZEND_ACC_EARLY_BINDING (1 << 15) /* | X | | */
+#define ZEND_ACC_EARLY_BINDING (1 << 14) /* | X | | */
/* | | | */
/* method flag (bc only), any method that has this | | | */
/* flag can be used statically and non statically. | | | */
-#define ZEND_ACC_ALLOW_STATIC (1 << 16) /* | X | | */
-/* | | | */
-/* deprecation flag | | | */
-#define ZEND_ACC_DEPRECATED (1 << 18) /* | X | | */
-/* | | | */
-#define ZEND_ACC_NO_RT_ARENA (1 << 19) /* | X | | */
-/* | | | */
-#define ZEND_ACC_CLOSURE (1 << 20) /* | X | | */
+#define ZEND_ACC_ALLOW_STATIC (1 << 15) /* | X | | */
/* | | | */
/* call through user function trampoline. e.g. | | | */
/* __call, __callstatic | | | */
-#define ZEND_ACC_CALL_VIA_TRAMPOLINE (1 << 21) /* | X | | */
+#define ZEND_ACC_CALL_VIA_TRAMPOLINE (1 << 16) /* | X | | */
/* | | | */
/* disable inline caching | | | */
-#define ZEND_ACC_NEVER_CACHE (1 << 22) /* | X | | */
-/* | | | */
-#define ZEND_ACC_GENERATOR (1 << 23) /* | X | | */
-/* | | | */
-/* Function with variable number of arguments | | | */
-#define ZEND_ACC_VARIADIC (1 << 24) /* | X | | */
-/* | | | */
-/* Immutable op_array (lazy loading) | | | */
-#define ZEND_ACC_IMMUTABLE (1 << 25) /* | X | | */
+#define ZEND_ACC_NEVER_CACHE (1 << 17) /* | X | | */
/* | | | */
-/* Function returning by reference | | | */
-#define ZEND_ACC_RETURN_REFERENCE (1 << 26) /* | X | | */
+/* Closure related | | | */
+#define ZEND_ACC_CLOSURE (1 << 18) /* | X | | */
+#define ZEND_ACC_FAKE_CLOSURE (1 << 19) /* | X | | */
+#define ZEND_ACC_NO_RT_ARENA (1 << 20) /* | X | | */
/* | | | */
-#define ZEND_ACC_DONE_PASS_TWO (1 << 27) /* | X | | */
+/* method flag used by Closure::__invoke() | | | */
+#define ZEND_ACC_USER_ARG_INFO (1 << 21) /* | X | | */
/* | | | */
-/* Function has typed arguments | | | */
-#define ZEND_ACC_HAS_TYPE_HINTS (1 << 28) /* | X | | */
+#define ZEND_ACC_GENERATOR (1 << 22) /* | X | | */
/* | | | */
-/* op_array has finally blocks (user only) | | | */
-#define ZEND_ACC_HAS_FINALLY_BLOCK (1 << 29) /* | X | | */
+#define ZEND_ACC_DONE_PASS_TWO (1 << 23) /* | X | | */
/* | | | */
/* internal function is allocated at arena (int only) | | | */
-#define ZEND_ACC_ARENA_ALLOCATED (1 << 29) /* | X | | */
-/* | | | */
-/* Function has a return type | | | */
-#define ZEND_ACC_HAS_RETURN_TYPE (1 << 30) /* | X | | */
+#define ZEND_ACC_ARENA_ALLOCATED (1 << 24) /* | X | | */
/* | | | */
/* op_array uses strict mode types | | | */
#define ZEND_ACC_STRICT_TYPES (1 << 31) /* | X | | */
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'client_version'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'driver_version'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'embedded'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'reconnect'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'report_mode'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Default property 'client_info'
Default property 'client_version'
Default property 'driver_version'
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 6
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 6
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 2
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 3
Number of Required Parameters: 3
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 2
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 6
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 2
Number of Required Parameters: 2
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 257
+Modifiers: 17
Number of Parameters: 5
Number of Required Parameters: 4
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 2
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 7
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 2
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 2
Number of Required Parameters: 2
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 5
Number of Required Parameters: 5
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'client_info'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'client_version'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'connect_errno'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'connect_error'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'errno'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'error'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'error_list'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'field_count'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'host_info'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'info'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'insert_id'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'protocol_version'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'server_info'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'server_version'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'sqlstate'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'stat'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'thread_id'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'warning_count'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Default property 'affected_rows'
Default property 'client_info'
Default property 'client_version'
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 2
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 1
Number of Required Parameters: 1
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isInternal: yes
isUserDefined: no
returnsReference: no
-Modifiers: 256
+Modifiers: 1
Number of Parameters: 0
Number of Required Parameters: 0
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'field_count'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'lengths'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'num_rows'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'type'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Default property 'current_field'
Default property 'field_count'
Default property 'lengths'
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'message'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Inspecting property 'sqlstate'
isPublic: yes
isProtected: no
isStatic: no
isDefault: yes
-Modifiers: 256
+Modifiers: 1
Default property 'errno'
Default property 'message'
Default property 'sqlstate'
isProtected():
bool(false)
getModifiers():
-int(256)
+int(1)
getDeclaringClass():
object(ReflectionClass)#3 (1) {
["name"]=>
isProtected():
bool(true)
getModifiers():
-int(512)
+int(2)
getDeclaringClass():
object(ReflectionClass)#3 (1) {
["name"]=>
isProtected():
bool(false)
getModifiers():
-int(1024)
+int(4)
getDeclaringClass():
object(ReflectionClass)#3 (1) {
["name"]=>
isProtected():
bool(false)
getModifiers():
-int(1024)
+int(4)
getDeclaringClass():
object(ReflectionClass)#3 (1) {
["name"]=>
?>
--EXPECT--
int(0)
+int(64)
int(32)
-int(4)
int(0)
int(0)
int(0)
bool(false)
bool(false)
bool(true)
-int(32)
+int(64)
bool(false)
bool(false)
bool(false)
bool(true)
bool(false)
bool(false)
-int(4)
+int(32)
bool(false)
bool(true)
bool(false)
- Constants [3] {
Constant [ public int IS_IMPLICIT_ABSTRACT ] { 16 }
- Constant [ public int IS_EXPLICIT_ABSTRACT ] { 32 }
- Constant [ public int IS_FINAL ] { 4 }
+ Constant [ public int IS_EXPLICIT_ABSTRACT ] { 64 }
+ Constant [ public int IS_FINAL ] { 32 }
}
- Static properties [0] {
?>
--EXPECTF--
Modifiers for method TestClass::foo():
-0x00000100
+0x00000001
Modifiers for method TestClass::stat():
-0x00000101
+0x00000011
Modifiers for method TestClass::priv():
-0x00000400
+0x00000004
Modifiers for method TestClass::prot():
-0x00000200
+0x00000002
Modifiers for method TestClass::fin():
-0x00000104
+0x00000021
Modifiers for method TestClass::__destruct():
-0x00000100
+0x00000001
Modifiers for method TestClass::__call():
-0x00000100
+0x00000001
Modifiers for method TestClass::__clone():
-0x00000100
+0x00000001
Modifiers for method TestClass::__get():
-0x00000100
+0x00000001
Modifiers for method TestClass::__set():
-0x00000100
+0x00000001
Modifiers for method TestClass::__unset():
-0x00000100
+0x00000001
Modifiers for method TestClass::__isset():
-0x00000100
+0x00000001
Modifiers for method TestClass::__tostring():
-0x00000100
+0x00000001
Modifiers for method TestClass::__sleep():
-0x00000100
+0x00000001
Modifiers for method TestClass::__wakeup():
-0x00000100
+0x00000001
Modifiers for method TestClass::__set_state():
-0x00000100
+0x00000001
Modifiers for method TestClass::__autoload():
-0x00000100
+0x00000001
Modifiers for method TestClass::foo():
-0x00000100
+0x00000001
Modifiers for method TestClass::stat():
-0x00000101
+0x00000011
Modifiers for method TestClass::priv():
-0x00000400
+0x00000004
Modifiers for method TestClass::prot():
-0x00000200
+0x00000002
Modifiers for method TestClass::fin():
-0x00000104
+0x00000021
Modifiers for method TestClass::__destruct():
-0x00000100
+0x00000001
Modifiers for method TestClass::__call():
-0x00000100
+0x00000001
Modifiers for method TestClass::__clone():
-0x00000100
+0x00000001
Modifiers for method TestClass::__get():
-0x00000100
+0x00000001
Modifiers for method TestClass::__set():
-0x00000100
+0x00000001
Modifiers for method TestClass::__unset():
-0x00000100
+0x00000001
Modifiers for method TestClass::__isset():
-0x00000100
+0x00000001
Modifiers for method TestClass::__tostring():
-0x00000100
+0x00000001
Modifiers for method TestClass::__sleep():
-0x00000100
+0x00000001
Modifiers for method TestClass::__wakeup():
-0x00000100
+0x00000001
Modifiers for method TestClass::__set_state():
-0x00000100
+0x00000001
Modifiers for method TestClass::__autoload():
-0x00000100
+0x00000001
Modifiers for method TestInterface::int():
-0x00000102
+0x00000041
Modifiers for method TestInterface::__clone():
-0x00000102
+0x00000041
Modifiers for method AbstractClass::foo():
-0x00000102
+0x00000041
Wrong number of params:
Warning: ReflectionMethod::getModifiers() expects exactly 0 parameters, 1 given in %s on line %d
ReflectionMethod::getModifiers() modifiers:
-0x00000100
+0x00000001
isDefault():
bool(true)
getModifiers():
-int(256)
+int(1)
getDeclaringClass():
object(ReflectionClass)#%d (1) {
["name"]=>
isDefault():
bool(true)
getModifiers():
-int(257)
+int(17)
getDeclaringClass():
object(ReflectionClass)#%d (1) {
["name"]=>
isDefault():
bool(true)
getModifiers():
-int(512)
+int(2)
getDeclaringClass():
object(ReflectionClass)#%d (1) {
["name"]=>
isDefault():
bool(true)
getModifiers():
-int(1024)
+int(4)
getDeclaringClass():
object(ReflectionClass)#%d (1) {
["name"]=>
Reflecting on property TestClass::pub
getModifiers():
-int(256)
+int(1)
**********************************
**********************************
Reflecting on property TestClass::stat
getModifiers():
-int(257)
+int(17)
**********************************
**********************************
Reflecting on property TestClass::prot
getModifiers():
-int(512)
+int(2)
**********************************
**********************************
Reflecting on property TestClass::priv
getModifiers():
-int(1024)
+int(4)
**********************************
?>
--EXPECT--
-C::a1: int(256)
-D::a1: int(256)
-C::a2: int(512)
-D::a2: int(512)
-C::a3: int(1024)
-D::a3: int(1024)
-C::a4: int(257)
-D::a4: int(257)
-C::a5: int(513)
-D::a5: int(513)
-C::a6: int(1025)
-D::a6: int(1025)
+C::a1: int(1)
+D::a1: int(1)
+C::a2: int(2)
+D::a2: int(2)
+C::a3: int(4)
+D::a3: int(4)
+C::a4: int(17)
+D::a4: int(17)
+C::a5: int(18)
+D::a5: int(18)
+C::a6: int(20)
+D::a6: int(20)