On Mon, Dec 29, 2014 at 6:17 AM, Levi Morrison <le...@php.net> wrote: > On Mon, Dec 29, 2014 at 3:22 AM, Stanislav Malyshev <smalys...@gmail.com> > wrote: >> Hi! >> >>> Hi Stas >>> >>> 2014-12-29 9:05 GMT+01:00 Stas Malyshev <smalys...@gmail.com>: >>>> The CI tests still seem to be failing: >>>> >>>> ===================================================================== >>>> FAILED TEST SUMMARY >>>> --------------------------------------------------------------------- >>>> SPL: spl_autoload() and friends [ext/spl/tests/spl_autoload_001.phpt] >>>> SPL: spl_autoload() with methods [ext/spl/tests/spl_autoload_005.phpt] >>>> SPL: spl_autoload() with inaccessible methods >>>> [ext/spl/tests/spl_autoload_007.phpt] >>>> SPL: spl_autoload() with exceptions [ext/spl/tests/spl_autoload_008.phpt] >>>> ===================================================================== >>>> >>>> Please take a look. >>> >>> I looked at the tests and: >>> >>> * spl_autoload_001.phpt fails with an E_RECOVERABLE_ERROR but that is >>> not due to my patch (tests with and without) >>> * spl_autoload_005.phpt fails due to an E_STRICT (non-static method >>> called statically) >>> * spl_autoload_007.phpt fails due to same reason as >>> spl_autpload_001.phpt it seems >>> * spl_autoload_008.phpt fails due to an E_STRICT like spl_autoload_005.phpt >> >> You are right, looks like this is caused by >> https://github.com/php/php-src/commit/ad728725cb8e899a8415aa81db48825fac25e0d5 >> >> Levi, could you please take a look and fix it? > > Indeed, looking. Perhaps I simply ran Zend/ tests instead of all by > accident; I apologize.
The issue is obvious: I fixed the discrepancy between the docs and the ARG_INFO listed by requiring the first parameter to spl_autoload_register to be a callable. However, spl_autoload_register has a second parameter that says whether or not an exception should be thrown if it can't register the callback. Honestly, this is silly. Why are we emulating `callable` types still when we have callable types? As far as I can tell, this second parameter is only useful when the first is not callable; as such it would be unused if we actually enforced the callable type like we normally would do. I want to keep the type in arg_info because 1) providing a non-callable type is a logical error even if you suppress it with $throw = false 2) and parameter types are the standard way of checking this, not some odd boolean as another parameter but 3) this would make the second parameter unused 4) and if we removed it that would be a signature break. Sadly, I think the best option is to revert the change. Anyone else have a comment on this? -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php