On Fri, Mar 13, 2015 at 12:48 PM, Андрей Клюев <kluev.and...@gmail.com>
wrote:

> Hello internals! My name is Andrew and I write php literally since
> childhood (something around 10 years),
> now PHP - is my profession.
> And today once again debugging foreign code, I was ready to go to the
> hospital to see a psychiatrist.
> First, some of the code:
> Do you think that can output this feature?
>
> function test(A $a)
> {
> var_dump(get_class($a));
> }
>
> I always thought that only 'string (1) "A"', I have never been so wrong
> (c).
>
> The code below will display 'string (1) "B"'
>
> class A {
> }
>
> class B {
> public $id = 1;
> }
>
> set_error_handler(function () {
> return true;
> });
>
> function test(A $a)
> {
> var_dump(get_class($a));
> }
>
> test(new B());
>
> I think this is very unexpected behavior, and suggest you to consider the
> possibility of  removing this behavior in PHP7.
>

It has already been dropped by
https://wiki.php.net/rfc/engine_exceptions_for_php7 :)

As a side node, an "A $a" typehint does not make sure that get_class($a)
=== 'A', only that $a instanceof A.

Nikita

Reply via email to