|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2007-11-01 07:52 UTC] sebastian@php.net
Description:
------------
ReflectionMethod::isConstructor() does not work for methods that are named __construct() in interfaces.
Reproduce code:
---------------
<?php
interface Foo
{
public function __construct(Bar $bar);
}
$interface = new ReflectionClass('Foo');
$constructor = $interface->getMethod('__construct');
var_dump($constructor->isConstructor());
Expected result:
----------------
bool(true)
Actual result:
--------------
bool(false)
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 02:00:01 2025 UTC |
This is discussable as it is not really a constructor here. It simply forces the protocol for the constructor. We do mark abstract constructors as ctors though, so we imho should do so in interfaces as well. [marcus@zaphod PHP_5_3]$ php -r 'abstract class t{abstract function __construct();} ReflectionClass::export("T");' make: `sapi/cli/php' is up to date. Class [ <user> abstract class t ] { @@ Command line code 1-1 - Constants [0] { } - Static properties [0] { } - Static methods [0] { } - Properties [0] { } - Methods [1] { Method [ <user, ctor> abstract public method __construct ] { @@ Command line code 1 - 1 } } }