Doc #76117 [Asn->Csd]: uopz flags is NOT for classes, but methods
| From: | cmb@php.net | Date: | Thu, 13 Aug 2020 13:55:35 +0000 |
| Subject: | Doc #76117 [Asn->Csd]: uopz flags is NOT for classes, but methods | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-17779@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=76117&edit=1
ID: 76117
Updated by: cmb@php.net
Reported by: Andy_Schmidt at HM-Software dot com
Summary: uopz flags is NOT for classes, but methods
-Status: Assigned
+Status: Closed
Type: Documentation Problem
Package: Documentation problem
Operating System: any
PHP Version: 7.2.3
-Assigned To: krakjoe
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Fixed with <http://svn.php.net/viewvc?view=revision&revision=350311>.
Previous Comments:
------------------------------------------------------------------------
[2018-03-20 22:08:14] cmb@php.net
I was assuming "normal" typing, not strict typing. In the latter
case passing NULL as second argument to uopz_flags() would indeed
trigger an InvalidArgumentException.
Joe, could you please clarify whether retrieving and changing
attributes of a class via uopz_flags() is supposed to work by
passing an empty string as second argument?
------------------------------------------------------------------------
[2018-03-20 19:40:24] Andy_Schmidt at HM-Software dot com
In fact, lookin at YOUR code snippet you sent me, it does seem to permit either an object or string
for the FIRST parameter (scope), and ONLY a string for the SECOND parameter (prop)? If the second
parameter is NOT a string, then the error message will be logged to the php error log:
!scope || !prop || !value ||
(Z_TYPE_P(scope) != IS_OBJECT && Z_TYPE_P(scope) != IS_STRING) ||
Z_TYPE_P(prop) != IS_STRING)
------------------------------------------------------------------------
[2018-03-20 19:32:08] Andy_Schmidt at HM-Software dot com
No Opcode active. I even disabled WinCache and xdebug extensions and retestet. In addition, I moved
the uopz extension to be first one .ini file.
Result remains:
PHP Fatal error: Uncaught InvalidArgumentException: unexpected parameter combination, expected
(class, function, flags) or (function, flags)
Stack trace:
#0 E:\Hosted Sites\wwwroot\anamera_v2\test\syntax.php(6): uopz_flags('MyClass', NULL, 0)
#1 {main}
To me, the message does NOT indicate that "class" does not exist, it seems to state that
the parameter signature doesn't match one of the two permitted variations.
This is further supported by the fact that THIS will work just fine:
var_dump( uopz_flags(MyClass::class, 'mymethod', 0) );
If the problem was an absent MyClass, then the combination MyClass::mymethod would also have failed.
So - as long as a method parameter is not left NULL, the uopz_flags function will work as expected.
------------------------------------------------------------------------
[2018-03-20 17:43:25] cmb@php.net
Thanks for testing. However, my test script works for me on
Windows with PHP 5.6 with UOPZ 2.0.7 and PHP 7.1 and 7.2 with UOPZ
5.0.2, which is to be expected from looking at the relevant
code[1].
The InvalidArgumentException would be thrown, though, if an yet
undefined class would be passed as first parameter to
uopz_flags(). Is there perhaps an issue with OPcache? Note that
UOPZ should be loaded before OPcache.
[1] <https://github.com/krakjoe/uopz/blob/v5.0.2/uopz.c#L530>
------------------------------------------------------------------------
[2018-03-20 15:18:17] Andy_Schmidt at HM-Software dot com
Result:
PHP Fatal error: Uncaught InvalidArgumentException:
unexpected parameter combination,
expected (class, function, flags) or (function, flags)
Stack trace: #0: uopz_flags('MyClass', NULL, 0)
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=76117
--
Edit this bug report at https://bugs.php.net/bug.php?id=76117&edit=1