Skip to content

Avoid warning in PHP 7.2 because of non-countable data #20859

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 26, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Only count on arrays or countables to avoid warnings in PHP 7.2
  • Loading branch information
wouterj committed Dec 10, 2016
commit 94253e8a23ec6d312ea72a38e438e8e4dba0fe53
2 changes: 1 addition & 1 deletion src/Symfony/Component/Form/Form.php
Original file line number Diff line number Diff line change
Expand Up @@ -748,7 +748,7 @@ public function isEmpty()

return FormUtil::isEmpty($this->modelData) ||
// arrays, countables
0 === count($this->modelData) ||
((is_array($this->modelData) || $this->modelData instanceof \Countable) && 0 === count($this->modelData)) ||
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what about:

array() === $this->modelData ||
($this->modelData instanceof \Countable && 0 === count($this->modelData) ||

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is to avoid calling count() on an array? If that's the case, shouldn't we fix this throughout all 0 === count() calls in the code base?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find it more readable :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

creating an empty array to test if some var is also an empty array seems a bit much for syntax sugar?

Copy link
Contributor

@ro0NL ro0NL Dec 16, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldnt this be covered by FormUtils::isEmpty (or maybe add isEmptyCollection)?

Ie. what about https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php#L98?

// traversables that are not countable
($this->modelData instanceof \Traversable && 0 === iterator_count($this->modelData));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't it check this before 0 === count($this->modelData)?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With the latest update, it doesn't have to be done before the count.

}
Expand Down