Skip to content

Foundation: Port ImapClient 3 to PSR-4 and PHP8.1+ interfaces #41

@ralflang

Description

@ralflang
  • consistently use Horde Streams instead of raw stream handles
  • use union and intersection types instead of classes which try to be two things at once
  • stream-first interface, to-string on demand rather than conditional return type
  • Config class rather than options array
  • PSR-14 EventListener interface for observability
  • Horde Stream for imap connection dump instead of "debug" option
  • PSR-16 SimpleCache interface for caching concerns (probably implement PSR-6 interface later as a better fit)
  • All optional collaborators default to Noop/Null implementations rather than "null" to avoid need to check on every step
  • lazy implementation, i.e. only connect once we really need to. No connection on construct or deserialization
  • Feature parity with old implementation except "deprecated"
  • Keep lib/ as-is for now but will deprecate in Horde 6 lifecycle and abandon later
  • Keep all attribution to @slusarz and other original authors - we didn't invent this thing, we just repackage it

Prerequisite for #39

Metadata

Metadata

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions