Skip to content

PHP wrong format indentation #7462

@riksoft

Description

@riksoft

Apache NetBeans version

Apache NetBeans 22

What happened

The code inside a function influences how is formatted the code into another function when making use of ALT+Shift+F
I already filed this bug that is a similar problemi for JS (#7243) but this one I think it's even worse.

Language / Project Type / NetBeans Component

PHP project

How to reproduce

(1) Comment the line
$res = ['test1' => 1, 'test2' => 2, 'test3' => implode(',', $test4)];
and press ALT Shift+F
You'll see "Array(" in the function stuff() moving in the right position.
(2)
Remove the comment from
$res = ['test1' => 1, 'test2' => 2, 'test3' => implode(',', $test4)];
and "array(" will move again in the bad position.
(3)
In the line
$res = ['test1' => 1, 'test2' => 2, 'test3' => implode(',', $test4)];
change "test3" with "test33333333333333333333" and you'll see "array(" moving further right.
I haven't found any workaround to solve this problem.

<?php

class test
{
	public static function test($res)
	{
		$test4 = [1, 2, 3, 4];

		// The lenght of this line changes the format position of "array("
		// in function stuff() :-o !!!
		// E.g. try to change test3 into test333333
		// and format the code again: "array(" will be moved further right.
		// Or simply comment the following line and reformat
		$res = ['test1' => 1, 'test2' => 2, 'test3' => implode(',', $test4)];

		return $res;
	}


	public static function stuff()
	{
		return array_merge(self::registerRules(),
										 array(
			 'opt1' => FILTER_SANITIZE_NUMBER_INT,
			 'opt2' => FILTER_SANITIZE_NUMBER_INT
		  )
		);
	}
}

I'd like "array(" in the return of stuff() to stay on the first line, like this

return array_merge(self::registerRules(), array(
			 'opt1' => FILTER_SANITIZE_NUMBER_INT,
			 'opt2' => FILTER_SANITIZE_NUMBER_INT
		  )

or something like this

return array_merge(self::registerRules(),
				array(
					'opt1' => FILTER_SANITIZE_NUMBER_INT,
					'opt2' => FILTER_SANITIZE_NUMBER_INT
				)
		);

But that's not the point: regardless of what I expect to see, the problem is that "array(" moves right according to the length of
$res = ['test1' => 1, 'test2' => 2, 'test3' => implode(',', $test4)];
in the other function. That's quite weird.

PS: If this could help, I format all my code with tabs, not spaces.

Did this work correctly in an earlier version?

No / Don't know

Operating System

Debian Bookworm (12)

JDK

Java: 17.0.11; OpenJDK 64-Bit Server VM 17.0.11+9-Debian-1deb12u1 - Runtime: OpenJDK Runtime Environment 17.0.11+9-Debian-1deb12u1

Apache NetBeans packaging

Apache NetBeans binary zip

Anything else

No response

Are you willing to submit a pull request?

No

Attached

Screenshot of the editor formatting options
f2
f1

zip with export of formatting options
format.zip

Metadata

Metadata

Assignees

Labels

PHP[ci] enable extra PHP tests (php/php.editor)kind:bugBug report or fix

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions