Small annoyances of PHP: Simple fixes would make tests fail

From: Date: Fri, 19 Feb 2021 14:04:04 +0000
Subject: Small annoyances of PHP: Simple fixes would make tests fail
Groups: php.internals 
Request: Send a blank email to internals+get-113212@lists.php.net to get a copy of this message
Hi there,
we encountered small annoyances over time which could be easy to fix but would break tests.
Why does this matter? While it is easy to fix the PHP test suite they could potentially affect other
projects' code, most probably tests.

Here are the two things on our current list:

Stack traces:
==========
Stack traces for certain constructs do not include the exact location in the stack frame:
	$a[(object)null] = 1;
	$e->getTrace() => []		# <-- no stack trace
while for
	file(); / file(null);
	$e->getTrace() => [ ["file"]=> .. ].

The change would probably be something like removing one line
	ptr = ptr->prev_execute_data;
In Zend/zend_builtin_functions.c

The BC impact Is that stack traces may contain an additional entry which is used in a lot of tests.

Work-around: Our solution right now is to manually check in the exception handler whether
$e->getFile() / $e->getLine() is already contained in $e->getTrace()[0] and otherwise add
it to have uniform stack traces. Works, but ugly :-)

Indentation in var_export:
====================
The indentation for
	var_export((object)[(object)[]]);
is off by one for nested structures:
	(object) array(
	   '0' => 			# <-- extra space before index
	  (object) array(
and the fix would be to change
	buffer_append_spaces(buf, level + 2)
to
	buffer_append_spaces(buf, level + 1)
in ext/standard/var.c

This breaks about 60 PHP tests relying on the var_export format.

We were hoping for a new function mitigating this issue but https://wiki.php.net/rfc/readable_var_representation
<https://wiki.php.net/rfc/readable_var_representation>
seems to get rejected so the issue remains :-)

---

Is there any way something like there things could/should be tackled for a future PHP version?
I'm torn because of the impact vs. benefit of the improvements.

- Chris



Thread (7 messages)

« previous php.internals (#113212) next »