php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #34299 ReflectionClass::isInstantiable() returns true for abstract classes
Submitted: 2005-08-29 23:16 UTC Modified: 2005-08-30 09:39 UTC
From: dennis at inmarket dot lviv dot ua Assigned: helly
Status: Closed Package: Class/Object related
PHP Version: 5.0.4 OS: *
Private report: No CVE-ID:
 [2005-08-29 23:16 UTC] dennis at inmarket dot lviv dot ua
Description:
------------
ReflectionClass::isInstantiable() returns true for abstract classes. Of course, subsequent call to ReflectionClass::newInstance() fails. Please note: this is not the same as bug #28895 (which claims to be solved) - that bug submitter stressed that isAbstract always returns false. In this case, isAbstract returns true, but the isInstantiable also returns true.

Reproduce code:
---------------
<?

abstract class X {}

$rc = new ReflectionClass('X');
echo $rc->isAbstract() ? 'yes' : 'no', "\n";
if($rc->isInstantiable()) {
  echo "Class X is instantiable";
  $x = $rc->newInstance();
} else {
  echo "Cannot instantiate abstract class";
}

?>

Expected result:
----------------
yes
Cannot instantiate abstract class

Actual result:
--------------
yes
Class X is instantiable
Fatal error: Cannot instantiate abstract class X in /path/to/abstract.php on line 9

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-08-29 23:33 UTC] sniper@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-08-30 09:39 UTC] helly@php.net
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2014 The PHP Group
All rights reserved.
Last updated: Fri Apr 18 15:02:26 2014 UTC