Bug #79516 [Opn]: class_exists returns true for disabled classes

From: Date: Fri, 24 Apr 2020 17:10:36 +0000
Subject: Bug #79516 [Opn]: class_exists returns true for disabled classes
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-226765@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=79516&edit=1

 ID:                 79516
 Updated by:         cmb@php.net
 Reported by:        392223903 at qq dot com
 Summary:            class_exists returns true for disabled classes
 Status:             Open
 Type:               Bug
 Package:            *General Issues
 Operating System:   win10,win7
 PHP Version:        7.2.30
 Block user comment: N
 Private report:     N

 New Comment:

The problem is not only class_exists(), but also that
get_declared_classes() does not have an $exclude_disabled
parameter like get_defined_functions(), and that ReflectionClass
is missing an ::isDisabled() method.  Same for the respective
interface related functionality, and likely also for traits.


Previous Comments:
------------------------------------------------------------------------
[2020-04-24 14:53:36] bugreports at gmail dot com

> I could have sworn that function_exists returned true

no, it's the way to go virtually forever to write defensive code for optional stuff like
"read exif data and put it in the database due upload, otherwise you have to type it by
hand"

> I don't like the inconsistency either

yes, class_exists() should behave identical

------------------------------------------------------------------------
[2020-04-24 14:49:41] requinix@php.net

I could have sworn that function_exists returned true... Apparently not.

I don't like the inconsistency either.

------------------------------------------------------------------------
[2020-04-24 07:50:35] 392223903 at qq dot com

This is not a documentation issue. Because using the disable_functions configuration item and
function_exists method to judge is correct
Examples:
1.disable_functions = md5
2.var_dump(function_exists ('md5'));  //this return false 

disable_classes + class_exists Does not match

disable_functions  +  function_exists  Is a match

------------------------------------------------------------------------
[2020-04-24 06:33:35] requinix@php.net

disable_classes and disable_functions prevent you from using them. It does not block them from being
registered into the engine.

The docs should go into more detail about this behavior.

------------------------------------------------------------------------
[2020-04-24 03:14:06] 392223903 at qq dot com

Description:
------------
(1).php.ini conf 
    disable_classes = com
(2).php code check
    var_dump(class_exists('Com'));    //return true ? I disabled it! why ?

But the disable_functions configuration item and function_exists method are correct。

this bug in php5.x-php7.x version



------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=79516&edit=1


Thread (5 messages)

« previous php.bugs (#226765) next »