Skip to content

[Issue] Fix incorrect return type for getOptionByCode method #39404

Open
@m2-assistant

Description

@m2-assistant

This issue is automatically created based on existing pull request: #39389: Fix incorrect return type for getOptionByCode method


Description (*)

I've noticed that \Magento\Catalog\Model\Product\Configuration\Item\ItemInterface::getOptionByCode return type is defined as object all the time:

/**
* Get item option by code
*
* @param string $code
* @return \Magento\Catalog\Model\Product\Configuration\Item\Option\OptionInterface
*/
public function getOptionByCode($code);

However, this interface implements 3 classes, and each of them returns object OR null, so it's a bug in the method definition on interface:

  • /**
    * @inheritdoc
    * @since 101.1.1
    */
    public function getOptionByCode($code)
    {
    if ($this->getQuoteItem()) {
    return $this->getQuoteItem()->getOptionBycode($code);
    }
    return null;
    }
  • /**
    * Get item option by code
    *
    * @param string $code
    * @return \Magento\Quote\Model\Quote\Item\Option || null
    */
    public function getOptionByCode($code)
    {
    if (isset($this->_optionsByCode[$code]) && !$this->_optionsByCode[$code]->isDeleted()) {
    return $this->_optionsByCode[$code];
    }
    return null;
    }
  • /**
    * Get item option by code
    *
    * @param string $code
    * @return Option|null
    */
    public function getOptionByCode($code)
    {
    if (isset($this->_optionsByCode[$code]) && !$this->_optionsByCode[$code]->isDeleted()) {
    return $this->_optionsByCode[$code];
    }
    return null;
    }

This pull request fixes incorrect phpdoc block, which leads to confusion, which leads to bugs during development

Related Pull Requests

Fixed Issues (if relevant)

  1. Fixes magento/magento2#<issue_number>

Manual testing scenarios (*)

  1. ...
  2. ...

Questions or comments

Contribution checklist (*)

  • Pull request has a meaningful description of its purpose
  • All commits are accompanied by meaningful commit messages
  • All new or changed code is covered with unit/integration tests (if applicable)
  • README.md files for modified modules are updated and included in the pull request if any README.md predefined sections require an update
  • All automated tests passed successfully (all builds are green)

Metadata

Metadata

Assignees

Labels

Area: FrameworkComponent: QuoteComponent: WishlistIssue: ConfirmedGate 3 Passed. Manual verification of the issue completed. Issue is confirmedPriority: P2A defect with this priority could have functionality issues which are not to expectations.Progress: PR in progressReported on 2.4.xIndicates original Magento version for the Issue report.Reproduced on 2.4.xThe issue has been reproduced on latest 2.4-develop branchTriage: Dev.ExperienceIssue related to Developer Experience and needs help with Triage to Confirm or Reject it

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions