php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #39884 ReflectionParameter::getClass() throws exception for type hint self
Submitted: 2006-12-19 13:18 UTC Modified: 2006-12-22 15:39 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:1 (100.0%)
Same OS:1 (100.0%)
From: bugs at php dot frankkleine dot de Assigned:
Status: Closed Package: Unknown/Other Function
PHP Version: 5.2.0 OS:
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: bugs at php dot frankkleine dot de
New email:
PHP Version: OS:

 

 [2006-12-19 13:18 UTC] bugs at php dot frankkleine dot de
Description:
------------
The ReflectionParameter::getClass() method does not work properly if the reflected parameter uses "self" as type hint. Instead, a ReflectionException is thrown saying that the class "self" does not exist. Tested with 5.2 and 6.0.0-dev from Nov 22.

Reproduce code:
---------------
<?php
class stubParamTest
{
    function paramTest(self $param)
    {
        // nothing to do
    }
}
$test1 = new stubParamTest();
$test2 = new stubParamTest();
$test1->paramTest($test2);
$refParam = new ReflectionParameter(array('stubParamTest', 'paramTest'), 'param');
var_dump($refParam->getClass());
?>

Expected result:
----------------
object(ReflectionClass)[4]
  public 'name' => 'stubParamTest' (length=13)


Actual result:
--------------
Fatal error: Uncaught exception 'ReflectionException' with message 'Class self does not exist' in C:\apachefriends\xampp1.5.3a\xampp\htdocs\tests\type_hint_self.php:13 Stack trace: #0 C:\apachefriends\xampp1.5.3a\xampp\htdocs\tests\type_hint_self.php(13): ReflectionParameter->getClass() #1 {main} thrown in C:\apachefriends\xampp1.5.3a\xampp\htdocs\tests\type_hint_self.php on line 13

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-12-19 14:40 UTC] thekid@php.net
Same goes for "parent" which works as type hint but will make reflection try to look up a class called "parent" (and thus throw an exception)
 [2006-12-19 14:44 UTC] thekid@php.net
http://sitten-polizei.de/bug39884.diff (CVS HEAD = PHP6, is probably easily backportable to 5.2)

Might need some work with Unicode, I haven't patched PHP in quite a while and have lost track of how Unicode semantics work in extensions...
 [2006-12-19 15:13 UTC] thekid@php.net
http://sitten-polizei.de/bug39884.phpt verifies the new functionality
 [2006-12-19 17:03 UTC] thekid@php.net
http://sitten-polizei.de/bug39884-php5.diff

Patch for PHP_5_2 branch
 [2006-12-22 15:39 UTC] iliaa@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-2025 The PHP Group
All rights reserved.
Last updated: Mon Apr 07 15:01:31 2025 UTC