Code Monkey home page Code Monkey logo

Comments (5)

fijiwebdesign avatar fijiwebdesign commented on May 19, 2024 1

I think all you need here is to dependency inject the Attachment class.

In Parser

protected  $attachmentClass = 'PhpMimeMailParser\Attachment';

public function setAttachmentClass($className) {
    $this->attachmentClass = $className;
}

To use a different Attachment class, could set the Class Constructor Namespace

$Parser = new PhpMimeMailParser\Parser();
$Parser->setAttachmentClass('SomeOtherNamespace\Attachment');

or overriding the getAttachments() method

MyParser extends PhpMimeMailParser\Parser {
    protected function getAttachment($filename, $content_type, 
        $stream, $disposition, 
        $contentidAttachments, $headersAttachments) {

        return new SomeOtherNamespace\Attachment($filename, $content_type, 
            $stream, $disposition, 
            $contentidAttachments, $headersAttachments);
   }
}

Then to instantiate attachments

protected function getAttachment() {
    $params = func_get_args();
    $refl = new ReflectionClass($className);
    return $refl->newInstanceArgs($params);
}

// instead of using new Attachment()
$attachment = $this->getAttachment(
                    $filename,
                    $this->getPart('content-type', $part),
                    $this->getAttachmentStream($part),
                    $disposition,
                    $contentidAttachments,
                    $headersAttachments
                );


from php-mime-mail-parser.

eXorus avatar eXorus commented on May 19, 2024

Why you can't do it ?

from php-mime-mail-parser.

thierryve avatar thierryve commented on May 19, 2024

Yeah that is possible but Attachment is directly initiated in https://github.com/eXorus/php-mime-mail-parser/blob/master/src/Parser.php#L550

from php-mime-mail-parser.

eXorus avatar eXorus commented on May 19, 2024

Ok I will do it.
Something like this ?
// Using SES Notifier
$sesNotifier = new SesNotifier(...);
$someClass = new SomeClass($sesNotifier);

// Or we can use MandrillNotifier

$mandrillNotifier = new MandrillNotifier(...);
$someClass = new SomeClass($mandrillNotifier);

// This will work no matter which implementation we use
$someClass->doStuff();

http://fideloper.com/hexagonal-architecture

from php-mime-mail-parser.

thierryve avatar thierryve commented on May 19, 2024

Great idea, I would love to see something with a Attachment Collection that is passed into the Parser. If no a default collection is used.

from php-mime-mail-parser.

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.