Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[HttpFoundation] Allow DateTimeImmutable in Response setters#24677

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
Tobion merged 1 commit intosymfony:masterfromderrabus:response-with-dti
Oct 26, 2017

Conversation

@derrabus
Copy link
Member

QA
Branch?4.1
Bug fix?no
New feature?yes
BC breaks?no
Deprecations?no
Tests pass?yes
Fixed ticketsnone
LicenseMIT
Doc PRTODO

Proposal

This PR adds the ability to useDateTimeImmutable objects instead ofDateTime in the following setters of HttpFoundation'sResponse class.

  • setDate()
  • setExpires()
  • setLastModified()

The corresponding getters are not touched, meaning they will still return good oldDateTime instances.

BC considerations

  • Calling code usingDateTime objects will still work as before.
  • Classes derived fromResponse will break if they override one of the methods above. Since all of them are considered final in Symfony 4, none of them should be overridden, though.

@derrabusderrabus changed the title[HttpFundation] Allows DateTimeImmutable in Response DateTime setters[HttpFundation] Allow DateTimeImmutable in Response DateTime settersOct 24, 2017
@derrabusderrabus changed the title[HttpFundation] Allow DateTimeImmutable in Response DateTime setters[HttpFundation] Allow DateTimeImmutable in Response settersOct 24, 2017
@derrabusderrabus changed the title[HttpFundation] Allow DateTimeImmutable in Response setters[HttpFoundation] Allow DateTimeImmutable in Response settersOct 24, 2017
@nicolas-grekasnicolas-grekas added this to the4.1 milestoneOct 25, 2017
Copy link
Member

@nicolas-grekasnicolas-grekas left a comment

Choose a reason for hiding this comment

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

(even for 4.0)

Copy link
Member

@fabpotfabpot left a comment

Choose a reason for hiding this comment

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

ok for 4.0 as well

$date = \DateTimeImmutable::createFromMutable($date);
}

$date =$date->setTimezone(new \DateTimeZone('UTC'));
Copy link
Contributor

Choose a reason for hiding this comment

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

Correct me if I'm wrong, butDateTimeInterface doesn't have asetTimezone method from what I can tell.

Copy link
MemberAuthor

Choose a reason for hiding this comment

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

It doesn't. That's why the block above that line makes sure we're dealing with aDateTimeImmutable here.

Copy link
MemberAuthor

Choose a reason for hiding this comment

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

To explain this a bit more: The sole purpose ofDateTimeInterface is to allow type-hinting for objects that are eitherDateTime orDateTimeImmutable. Those are the only two implementations of that interface and the php runtime doesn't allow userland code to directly implement the interface.

So at the beginning of the method,$date has to be either,null,DateTime orDateTimeImmutable. Fornull, we have an early exit. ADateTime instance is converted toDateTimeImmutable.

So right here,$date has to be an instance ofDateTimeImmutable which contains the methodsetTimezone().

Copy link
Contributor

Choose a reason for hiding this comment

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

the php runtime doesn't allow userland code to directly implement the interface.

Does this include extensions? Regardless of php allowing it or not, it looks weird like this. Should probably throw an exception or ignore the setter when it's not supported.

Copy link
Contributor

Choose a reason for hiding this comment

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

We don't need to handle something that doesn't happen. that's just adding visual noise. to me it's good as it is

Copy link
MemberAuthor

Choose a reason for hiding this comment

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

Does this include extensions?

An extension could probably do that, but it would be a very odd thing to do.

I could not even write a test for the case that we have aDateTimeInterface instance that is neither aDateTime nor aDateTimeImmutable instance. I don't think, we need to handle it.

apfelbox reacted with thumbs up emoji
@Tobion
Copy link
Contributor

Thank you@derrabus.

@TobionTobion merged commitcc7ccee intosymfony:masterOct 26, 2017
Tobion added a commit that referenced this pull requestOct 26, 2017
…etters (derrabus)This PR was merged into the 4.0-dev branch.Discussion----------[HttpFoundation] Allow DateTimeImmutable in Response setters| Q             | A| ------------- | ---| Branch?       | 4.1| Bug fix?      | no| New feature?  | yes| BC breaks?    | no| Deprecations? | no| Tests pass?   | yes| Fixed tickets | none| License       | MIT| Doc PR        | TODO## ProposalThis PR adds the ability to use `DateTimeImmutable` objects instead of `DateTime` in the following setters of HttpFoundation's `Response` class.* `setDate()`* `setExpires()`* `setLastModified()`The corresponding getters are not touched, meaning they will still return good old `DateTime` instances.## BC considerations* Calling code using `DateTime` objects will still work as before.* Classes derived from `Response` will break if they override one of the methods above. Since all of them are considered final in Symfony 4, none of them should be overridden, though.Commits-------cc7ccee Allow DateTimeImmutable in Response setters.
@derrabusderrabus deleted the response-with-dti branchOctober 26, 2017 10:08
@fabpotfabpot mentioned this pull requestOct 30, 2017
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@fabpotfabpotfabpot approved these changes

@nicolas-grekasnicolas-grekasnicolas-grekas approved these changes

+2 more reviewers

@TobionTobionTobion approved these changes

@linaorilinaorilinaori requested changes

Reviewers whose approvals may not affect merge requirements

Assignees

No one assigned

Projects

None yet

Milestone

4.1

Development

Successfully merging this pull request may close these issues.

6 participants

@derrabus@Tobion@fabpot@nicolas-grekas@linaori@carsonbot

[8]ページ先頭

©2009-2025 Movatter.jp