Git Product home page Git Product logo

Comments (10)

weierophinney avatar weierophinney commented on May 30, 2024

@gscscnd
Thank you for the pull request and contribution, but did you see the filter DateTimeFormatter?

https://github.com/zendframework/zend-filter/blob/master/src/DateTimeFormatter.php


Originally posted by @froschdesign at zendframework/zend-filter#85 (comment)

from laminas-filter.

weierophinney avatar weierophinney commented on May 30, 2024

@froschdesign, it seems that DateTimeFormatter returns a string, while I would like to receive DateTimeInterface.


Originally posted by @gszy at zendframework/zend-filter#85 (comment)

from laminas-filter.

weierophinney avatar weierophinney commented on May 30, 2024

@gscscnd
You are right. (Never read on phone in the sun! 🤦‍♂️ )


The following filtering is support:

  • string to DateTime
  • string to DateTimeImmutable
  • DateTime to DateTimeImmutable
  • DateTimeImmutable to DateTime

Is this correct or did I forget something?


Originally posted by @froschdesign at zendframework/zend-filter#85 (comment)

from laminas-filter.

weierophinney avatar weierophinney commented on May 30, 2024
  • string to DateTime
  • string to DateTimeImmutable

Actually I don’t check if a string was provided, just pass it to DateTime/DateTimeImmutable constructor.

  • DateTime to DateTimeImmutable
  • DateTimeImmutable to DateTime

Also DateTime to DateTime and similarly for immutable.


Originally posted by @gszy at zendframework/zend-filter#85 (comment)

from laminas-filter.

weierophinney avatar weierophinney commented on May 30, 2024

We have to explicitly define all possible values for the filtering - input and ouput. Otherwise, we can not write the full documentation and all required unit tests.

Also DateTime to DateTime and similarly for immutable.

This means:

  • DateTime to DateTime (new object, $immutable === false)
  • DateTime to DateTimeImmutable (new object, $immutable === true)
  • DateTimeImmutable to DateTime (new object, $immutable === false)
  • DateTimeImmutable to DateTimeImmutable (new object, $immutable === true)

Originally posted by @froschdesign at zendframework/zend-filter#85 (comment)

from laminas-filter.

weierophinney avatar weierophinney commented on May 30, 2024

We can throw an InvalidArgumentException if the user provides something other than DateTimeInterface|string. The user can provide a valid string that at the same time (ahem) is not a valid datetime, but it’s probably Date Validator’s responsibility.

Anyway:

  • DateTimeDateTime
  • DateTimeDateTimeImmutable
  • DateTimeImmutableDateTime
  • DateTimeImmutableDateTimeImmutable
  • stringDateTime
  • stringDateTimeImmutable

Originally posted by @gszy at zendframework/zend-filter#85 (comment)

from laminas-filter.

weierophinney avatar weierophinney commented on May 30, 2024

@gscscnd

We can throw an InvalidArgumentException if the user provides something other than DateTimeInterface|string.

No exceptions are allowed during the process of filtering. If the given value can not be handled by the filter, the value should be returned unfiltered.

  • DateTimeDateTime
  • DateTimeImmutableDateTimeImmutable

Does the filter create a new object each time or will the same object returned?


Can you describe the typical use case for this filter? Thanks!


Originally posted by @froschdesign at zendframework/zend-filter#85 (comment)

from laminas-filter.

weierophinney avatar weierophinney commented on May 30, 2024

No exceptions are allowed during the process of filtering. If the given value can not be handled by the filter, the value should be returned unfiltered.

🆗, will fix that. (Current code doesn’t throw exceptions explicitly, but setting $value to int will surely cause the DateTime constructor to throw.)

  • DateTimeDateTime
  • DateTimeImmutableDateTimeImmutable

Does the filter create a new object each time or will the same object returned?

Returns the same instance.

Can you describe the typical use case for this filter? Thanks!

I’ve got a form (or any array of data, for that matter) with a datetime­‑like input and an entity with a datetime­‑like property. I setup an InputFilter with a Date validator and a DateTime filter. The input array contains 2019-04-25T08:02 (string) and the (hydrated) output object has instance of DateTimeInterface.


Originally posted by @gszy at zendframework/zend-filter#85 (comment)

from laminas-filter.

weierophinney avatar weierophinney commented on May 30, 2024

@gscscnd

The input array contains 2019-04-25T08:02 (string) and the (hydrated) output object has instance of DateTimeInterface.

If you use zend-hydrator already then you can use Zend\Hydrator\Strategy\DateTimeFormatterStrategy to get the desired result. Have you tried this strategy?

https://docs.zendframework.com/zend-hydrator/v3/strategy/#zend92hydrator92strategy92datetimeformatterstrategy


Originally posted by @froschdesign at zendframework/zend-filter#85 (comment)

from laminas-filter.

weierophinney avatar weierophinney commented on May 30, 2024

Well, I didn’t know about it. Thanks for the pointer!


Originally posted by @gszy at zendframework/zend-filter#85 (comment)

from laminas-filter.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.