|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-07-09 05:17 UTC] davey@php.net
Description:
------------
I'm using head as of 5 minutes ago, approx: 23:10 EST
Calling a non-existant method using the $obj->{$var}() notation causes an unexplained exit of the script with the exit code 0377.
Reproduce code:
---------------
<?php
class foo {
function __construct()
{
$var = "foo";
$this->{$var}();
}
}
$foo = new foo;
?>
Expected result:
----------------
Nothing
Actual result:
--------------
With --enable-debug all I get this from gdb:
(gdb) run -f /var/www/php-cvs/testcase/evil_death_variable_method_call_nonexistant.php
Starting program: /var/www/php-cvs/php-src/sapi/cli/php -f /var/www/php-cvs/testcase/evil_death_variable_method_call_nonexistant.php
[Thread debugging using libthread_db enabled]
[New Thread -1214975328 (LWP 9095)]
Program exited with code 0377.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Nov 21 22:00:01 2025 UTC |
After further testing, I have found two more cases where this error occurs: When __call is defined, but no args are specified (i.e. function __call() { }) and is_callable() or method_exists() are called, Exit Code 0377 is also given. Whilst I understand this is an erroneous situation, it should either not care (i.e. func_get_args is being used for some stupid reason) or throw an error. - Davey