-
Notifications
You must be signed in to change notification settings - Fork 9.3k
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
[PHPDOC] Fix functions orderComment in Magento\Sales\Model\Order #39572
base: 2.4-develop
Are you sure you want to change the base?
[PHPDOC] Fix functions orderComment in Magento\Sales\Model\Order #39572
Conversation
Hi @dimitriBouteille. Thank you for your contribution!
Allowed build names are:
You can find more information about the builds here For more details, review the Code Contributions documentation. |
@magento run all tests |
@magento create issue |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't really like this approach.
Instead, I would rather allow objects that implement a more generic\Stringable
interface. https://www.php.net/manual/en/class.stringable.php
To make it happen, I think Magento\Framework\Phrase has to implement it.
I'm pretty sure Magento has similar issue in many places, so it would be logical to add support later to other places as well.
OR just to not support multiple types, and require the only string type, so that - we need to explicitly convert all places to string before passing it as a parameter
magento2/app/code/Magento/Paypal/Model/Ipn.php
Lines 220 to 226 in d06337a
$message = __( | |
'IPN "%1". A dispute has been resolved and closed. %2 Transaction amount %3.', | |
ucfirst($reasonCode), | |
$notificationAmount, | |
$reasonComment | |
); | |
$this->_order->addStatusHistoryComment($message)->setIsCustomerNotified(false)->save(); |
@dimitriBouteille @hostep any thoughts on it?
Just a bit more research, and how have the following thoughts:
it works just because
- we don't have
declare(strict_types=1);
declaration (I'm pretty sure sooner or later, we'll have these declarations) - and, we don't have defined artgument types (I'm pretty sure sooner or later, we'll have these declarations)
So, the code sample of the current state is like this:
https://3v4l.org/GNbYp
Suggested options
Option 1: allow \Stringable interface as an argument parameter and mark Phrase class to explicitly implement \Stringable
class
Code sample:
https://3v4l.org/CQM7s
Option 2: Just allow \Stringable interface as an argument parameter
Code sample:
https://3v4l.org/VMduZ
After playing with online code editor, I realized that this interface is automatically gets implemented:
Having having that in mind, I think we should consider Option2.
I agree with you that this solution is not the cleanest, ideally we should use the However, adding the In my opinion, this PR may be a quick fix and in the near future, we should review the code of Magento to use If you OK for you, I can do a second PR to use Stringable where there is need :) For information, I propose similar PR for |
@dimitriBouteille, I added code samples and options that I see, I think Option 2 should fit the best for us. About another PR - I also linked it to the "parent" issue Spoiler: we may not add implements Stringable on Phrase class for now. PS: I didn't check how phpstan works in this mode, but I think it should catch it correctly |
@ihor-sviziev Ok for option 2 :) However, in the future, adding the I also tested PHPStan, the option 2 works ❤️ |
…to\Sales\Model\Order
@ihor-sviziev I let you validate that it’s all good:) |
@magento run all tests |
Description (*)
This PR fix the bad phpdoc in
\Magento\Sales\Model\Order
. The argument$comment
in the following functions accept a Phrase objectHere is an example where the type
Phrase
is used :magento2/app/code/Magento/Paypal/Model/Ipn.php
Lines 220 to 226 in d06337a
With PHPSTAN is very complicated to setup the project with level 5 or higher :(
Related Pull Requests
None
Fixed Issues (if relevant)
None
Manual testing scenarios (*)
Setup PHPSTAN with level 5 or higher and run check.
Questions or comments
The quality of Magento code needs to be improved so that it is easier to use the code quality tools (phpstan, rector, ...) ❤️
Contribution checklist (*)
Resolved issues: