php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #60153 Interface method prototypes not enforced when implementd via traits.
Submitted: 2011-10-27 19:58 UTC Modified: 2011-11-01 15:26 UTC
From: tsteiner at nerdclub dot net Assigned: gron (profile)
Status: Closed Package: Class/Object related
PHP Version: 5.4.0beta2 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: tsteiner at nerdclub dot net
New email:
PHP Version: OS:

 

 [2011-10-27 19:58 UTC] tsteiner at nerdclub dot net
Description:
------------
When an class implements an interface and then uses a method defined in a trait for the implementation, the prototype of the method is not enforced.

Test script:
---------------
<?php

interface I {
    public function oneArgument($a);
}

trait T {
    public function oneArgument() {}
}

class C implements I {
    use T;
}


Expected result:
----------------
PHP Fatal error:  Declaration of C::oneArgument() must be compatible with C::oneArgument($a) in test.php on line 11

Actual result:
--------------
Script compiles and runs without error.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2011-10-27 20:02 UTC] tsteiner at nerdclub dot net
Sorry, the expected result should be

PHP Fatal error:  Declaration of C::oneArgument() must be compatible with I::oneArgument($a) in test.php on line 11
 [2011-11-01 15:25 UTC] gron@php.net
Automatic comment from SVN on behalf of gron
Revision: http://svn.php.net/viewvc/?view=revision&amp;revision=318650
Log: Fixed Bug #60153 (Interface method prototypes not enforced when implementd via traits.)
# Moved the freeing of overriden functions to a point after the check.
# The new check comes after the normal inheritance check to give the first check
# the opportunity to abort with a more detailed error.
# Also fixed a small type in an unrelated test.
 [2011-11-01 15:26 UTC] gron@php.net
This bug has been fixed in SVN.

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/.

 For Windows:

http://windows.php.net/snapshots/
 
Thank you for the report, and for helping us make PHP better.

Fixed with SVN rev 318650.
 [2011-11-01 15:26 UTC] gron@php.net
-Status: Open +Status: Closed -Assigned To: +Assigned To: gron
 [2012-04-18 09:48 UTC] laruence@php.net
Automatic comment on behalf of gron
Revision: http://git.php.net/?p=php-src.git;a=commit;h=7cd55955d1be231d304b36151170f673629145f2
Log: Fixed Bug #60153 (Interface method prototypes not enforced when implementd via traits.) # Moved the freeing of overriden functions to a point after the check. # The new check comes after the normal inheritance check to give the first check # the opportunity to abort with a more detailed error. # Also fixed a small type in an unrelated test.
 [2012-07-24 23:39 UTC] rasmus@php.net
Automatic comment on behalf of gron
Revision: http://git.php.net/?p=php-src.git;a=commit;h=7cd55955d1be231d304b36151170f673629145f2
Log: Fixed Bug #60153 (Interface method prototypes not enforced when implementd via traits.) # Moved the freeing of overriden functions to a point after the check. # The new check comes after the normal inheritance check to give the first check # the opportunity to abort with a more detailed error. # Also fixed a small type in an unrelated test.
 [2013-11-17 09:35 UTC] laruence@php.net
Automatic comment on behalf of gron
Revision: http://git.php.net/?p=php-src.git;a=commit;h=7cd55955d1be231d304b36151170f673629145f2
Log: Fixed Bug #60153 (Interface method prototypes not enforced when implementd via traits.) # Moved the freeing of overriden functions to a point after the check. # The new check comes after the normal inheritance check to give the first check # the opportunity to abort with a more detailed error. # Also fixed a small type in an unrelated test.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 19:01:29 2024 UTC