Doc->Bug #71909 [Opn->Ver]: wrong error for SplFixedArray

From: Date: Sat, 16 Jun 2018 17:13:27 +0000
Subject: Doc->Bug #71909 [Opn->Ver]: wrong error for SplFixedArray
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-215757@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=71909&edit=1

 ID:                 71909
 Updated by:         cmb@php.net
 Reported by:        public at grik dot net
-Summary:            Incorrect Documentation for SplFixedArray::fromArray
+Summary:            wrong error for SplFixedArray
-Status:             Open
+Status:             Verified
-Type:               Documentation Problem
+Type:               Bug
 Package:            SPL related
 Operating System:   MacOS
 PHP Version:        7.0.4
 Block user comment: N
 Private report:     N

 New Comment:

This is not really a documentation issue, since
SplFixedArray::fromArray() indeed expects an array as first
argument[1].  The actual problem is that the arginfo is not yet
specific enough to reflect this[2].  As of PHP 7.0.0 a more
elaborate API is available[3], but it has been missed to apply it,
and for BC reasons we can't fix this for *methods* in a minor
release, so it'll have to wait for PHP 8.  In my opinion, it would
be okay to improve the arginfo for *functions* for PHP 7.3,
though.

> Another problem with internal functions, is default values for
> arguments.

It seems to me that we should be able to add this information to
the arginfo.

[1] <https://github.com/php/php-src/blob/f2b4ec4bdc595773fb49b7d6ae8942c61f436288/ext/spl/spl_fixedarray.c#L675>
[2] <https://github.com/php/php-src/blob/f2b4ec4bdc595773fb49b7d6ae8942c61f436288/ext/spl/spl_fixedarray.c#L1045>
[3] <https://github.com/php/php-src/blob/PHP-7.0.0/Zend/zend_API.h#L104-L108>


Previous Comments:
------------------------------------------------------------------------
[2016-03-29 13:07:01] krakjoe@php.net

Another problem with internal functions, is default values for arguments.

I don't know how to fix it ...

------------------------------------------------------------------------
[2016-03-29 12:59:01] krakjoe@php.net

Agree, it's a general problem with internal functions, and their documentation.

I don't see that it can be solved by changing the arginfo though, that would surely break too
much code, wouldn't it ?

The only thing we can do in this, and similar cases, is update the documentation to reflect the
truth about the prototype, I think.

------------------------------------------------------------------------
[2016-03-29 11:08:33] dmitry@php.net

I'm not sure if this is a documentation problem for this function.
It's an inconsistent documentation for most internal functions.

Especially in this case, we expect "array" as first argument, but we don't have
"array" type hint.

------------------------------------------------------------------------
[2016-03-29 10:28:10] krakjoe@php.net

The documentation and declarations do not match.

------------------------------------------------------------------------
[2016-03-28 14:13:37] public at grik dot net

Description:
------------
When extending the SplFixedArray overriding fromArray() method, PHP shows incorrect error text.

The correct interface of a fromArray method is
   public static function fromArray($array, $save_indexes = true)
without array typehint.

Test script:
---------------
class Collection extends \SplFixedArray
{
    public static function fromArray(array $array, $save_indexes = true) {
    }
}

Collection::fromArray([]);


Expected result:
----------------
no error

Actual result:
--------------
Warning: Declaration of Collection::fromArray(array $array, $save_indexes = true) should be
compatible with SplFixedArray::fromArray($data, $save_indexes = NULL) in test.php on line 12


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=71909&edit=1


Thread (6 messages)

« previous php.bugs (#215757) next »