Toon posts:

[PHP] Swiftmailer gebruiken in eigen class

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 03-06 21:52
Hallo Tweakers,

Na enige tijden van googlen en uitproberen vraag ik het even hier. De situation is dat ik een eigen class heb. en in die class Swiftmailer wil gebruiken. Bijv;

PHP:
1
2
3
4
5
6
7
class clsMailer{
    public function sendMail($to, $from, $title, $cfg){
    $transport = Switft_SmtpTransport::newInstance($this->_cfg['host'], $this->_cfg['port'])
                ->setUsername($this->_cfg['user'])
                ->setPassword($this->_cfg['pass']);
    }
}


Ik heb de Swiftclass al included. Maar kan er niet bijkomen in de class zelf. Wanneer ik dat doe krijg ik de volgende foutmelding Class 'Switft_SmtpTransport' not found ook heb ik gebrobeerd om extends Swift achter mn class naam te zetten, maar ook dit werkt niet. Het includen van de SwiftRequired binnen de class mag ook niet. Want krijg dan deze melding syntax error, unexpected T_REQUIRE_ONCE, expecting T_FUNCTION

Hoe is het dan toch mogelijk om de swiftmailer class te gebruiken in mijn eigen gemaakte class ?

  • RobIII
  • Registratie: December 2001
  • Nu online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Dragon707 schreef op dinsdag 05 juli 2011 @ 23:59:
Wanneer ik dat doe krijg ik de volgende foutmelding Class 'Switft_SmtpTransport' not found
En dus kan is de Switft_SmtpTransport class niet geladen en dus werkt je include/require (waarschijnlijk) niet goed.
Dragon707 schreef op dinsdag 05 juli 2011 @ 23:59:
ook heb ik gebrobeerd om extends Swift achter mn class naam te zetten, maar ook dit werkt niet.
Want :? Foutmelding? Wat? Hoe? En je beseft dat PHP dan niet automatisch op magische wijze snapt waar 'ie swift's classes kan vinden? (Of je moet autoloading gebruiken, maar gezien je topic denk ik dat je dat niet gebruikt of het werkt niet).
Dragon707 schreef op dinsdag 05 juli 2011 @ 23:59:
Het includen van de SwiftRequired binnen de class mag ook niet. Want krijg dan deze melding syntax error, unexpected T_REQUIRE_ONCE, expecting T_FUNCTION
Dan staat je require op een verkeerde plek dus; hij zegt namelijk: "Ik verwacht hier een functie, geen require_once"
Dragon707 schreef op dinsdag 05 juli 2011 @ 23:59:
Hoe is het dan toch mogelijk om de swiftmailer class te gebruiken in mijn eigen gemaakte class ?
Als je eens (meer) relevante(!) code liet zien konden we misschien wat zinnig(ers) zeggen. Tot die tijd blijft het, wmb, koffiedik kijken. Heb je wel error_reporting op de juiste waarde staan? Want ik ruik eigenlijk dat daar waarschijnlijk ook iets niet helemaal jofel staat.

Heb je overigens hier al eens gekeken?

[Voor 12% gewijzigd door RobIII op 06-07-2011 00:09]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 03-06 21:52
RobIII schreef op woensdag 06 juli 2011 @ 00:04:
[...]

En dus kan is de class niet geladen en dus werkt je include (waarschijnlijk) niet goed.
Snap ik.
RobIII schreef op woensdag 06 juli 2011 @ 00:04:
[...]

Want :? Foutmelding? Wat? Hoe?
Ja, foutmelding. Ik krijg een foutmelding wanneer ik Swiftmailer included IN de class zelf die ik heb gemaakt dat "Ik verwacht hier een functie, geen require_once". Wanneer ik de class BUITEN de class include krijg ik een foutmelding van "Ik verwacht hier een functie, geen require_once" maar dan kan hij de switmailer class niet vinden. Ook heb ik geprobeerd om
PHP:
1
class clsMailer extends Swift{
te gebruiken. Maar dan krijg ik exact de zelfde foutmelding
code:
1
Fatal error: Class 'Switft_SmtpTransport' not found in /home/*/domains/*.net/public_html/class/mailer.class.php on line 121
RobIII schreef op woensdag 06 juli 2011 @ 00:04:
[...]

Dan staat je require op een verkeerde plek dus; hij zegt namelijk: "Ik verwacht hier een functie, geen require_once"
Snap ik. Zie hierboven.
RobIII schreef op woensdag 06 juli 2011 @ 00:04:
[...]

Als je eens (meer) relevante(!) code liet zien konden we misschien wat zinnig(ers) zeggen. Tot die tijd blijft het, wmb, koffiedik kijken. Heb je wel error_reporting op de juiste waarde staan? Want ik ruik eigenlijk dat daar waarschijnlijk ook iets niet helemaal jofel staat.
Error reporting staat altijd goed bij mij ;-) dat is het eerste wat ik altijd op let.
RobIII schreef op woensdag 06 juli 2011 @ 00:04:

Heb je overigens hier al eens gekeken?
Ja, en nee niks gevonden.

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 16:17

Matis

Rubber Rocket

Kloppen de hoofdletters in zowel de paden als in de naam van de class?
Gezien de foutmelding draai je geen Windows, dus zijn de bestandsnamen hoofdlettergevoelig.
Wat returned de include/require?

If money talks then I'm a mime
If time is money then I'm out of time


  • RobIII
  • Registratie: December 2001
  • Nu online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Nou: "/home/*/domains/*.net/public_html/class/mailer.class.php"

Staat er een bestand in /home/*/domains/*.net/public_html/class/ dat mailer.class.php heet? Komaan, beetje eigen inzet/moeite doen mag wel...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 03-06 21:52
RobIII schreef op woensdag 06 juli 2011 @ 00:22:
Nou: "/home/*/domains/*.net/public_html/class/mailer.class.php"

Staat er een bestand in /home/*/domains/*.net/public_html/class/ dat mailer.class.php heet? Komaan, beetje eigen inzet/moeite doen mag wel...
* moet je dan even zien als vervanging van een bepaalde naam/domein. En uiteraard bestaat het bestand.

mailer.class.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
        require_once './class/swiftmailer/swift_required.php';

    class clsMailer /* extends Swift */{

                // WONT WORK! require_once './class/swiftmailer/swift_required.php';

        private $_cfg;
        
        public function __construct($cfg){
            $this->_cfg = $cfg;
        }

        private function renderEmail($title, $subtitle, $content, $cfg){
                        * snip *
            return array('plain' => $PLAIN, 'html' => $HTML);
        }
        
        public function send($to, $from, $content, $title, $subtitle = false){
            
            if($subtitle)
                $subject = $title . ' - ' .$subtitle;
            else 
                $subject = $title;
                
            $content = $this->renderEmail($title, $subtitle, $content, $this->_cfg);
            
            $transport = Switft_SmtpTransport::newInstance($this->_cfg['host'], $this->_cfg['port'])
                ->setUsername($this->_cfg['user'])
                ->setPassword($this->_cfg['pass']);
            
            if(!$transport) return false;
            
            $mailer = Swift_Mailer::newInstance($transport);
            
            $message = Swift_Message::newInstance()
                ->setSubject($subject)
                ->setFrom($from)
                ->setTo($to)
                ->addPart($content['html'], 'text/html')
                ->setBody($content['plain']);
            
            return $mailer->batchSend($message);
        }
        * snip *
    }
?>


Het betreft vanaf lijn 23 waar hij de 'Switft_SmtpTransport' niet kan vinden van de Swiftmailer.

Anoniem: 350484

Uit de documentatie:

Swift Mailer uses an auto-loader so the only file you need to include is the lib/swift_required.php file.
Staan de andere bestanden relatief gezien wel op de juiste plek van swift_required.php ?

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 03-06 21:52
Anoniem: 350484 schreef op woensdag 06 juli 2011 @ 00:34:
Uit de documentatie:

Swift Mailer uses an auto-loader so the only file you need to include is the lib/swift_required.php file.
Staan de andere bestanden relatief gezien wel op de juiste plek van swift_required.php ?
Ja, dit heb ik ook gelezen. Echter is het hier ook niet mee gelukt helaas.

  • HendrikN
  • Registratie: Februari 2007
  • Laatst online: 21:26
$transport = Switft_SmtpTransport::newInstance(...)


:o

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 03-06 21:52
HendrikN schreef op woensdag 06 juli 2011 @ 00:43:
$transport = Switft_SmtpTransport::newInstance(...)


:o
Hmm.. ?

  • HendrikN
  • Registratie: Februari 2007
  • Laatst online: 21:26
Veel beter dan met een bold/underline kan ik het niet duidelijk maken hoor.

Flinke typo, kerel...

  • RobIII
  • Registratie: December 2001
  • Nu online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Er zit een t teveel in de classnaam. En verder ben ik je passieve houding een beetje beu; een beetje meer moeite doen mag wel. Als iets niet werkt, kom dan niet met
Dragon707 schreef op woensdag 06 juli 2011 @ 00:38:
Echter is het hier ook niet mee gelukt helaas.
maar met een exacte omschrijving van wat er niet werkt, waarom je denkt dat 't niet werkt etc. en een exacte foutmelding a.u.b. "Het werkt niet" blijven roepen worden we niet wijzer van.

[Voor 43% gewijzigd door RobIII op 06-07-2011 00:52]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Mint
  • Registratie: Mei 2005
  • Laatst online: 21:28
Zie de typo in de functie die je aanroept.

Edit:
Spuit 11

[Voor 5% gewijzigd door Mint op 06-07-2011 00:52]


  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 03-06 21:52
HendrikN schreef op woensdag 06 juli 2011 @ 00:51:
[...]


Veel beter dan met een bold/underline kan ik het niet duidelijk maken hoor.

Flinke typo, kerel...
:O !!!!!!!! Je hebt gelijk!! en ik kon het probleem maar niet vinden, ik snapte er werkelijk even helemaal niks meer van. Eventjes proberen (eerst even backup terug halen hele code ligt beetje overhoop van het testen en uitproberen)

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 16:17

Matis

Rubber Rocket

Gebruik je wel een IDE, elke gerenommeerde IDE had daar een kringel onder gezet.

If money talks then I'm a mime
If time is money then I'm out of time


  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 03-06 21:52
Matis schreef op woensdag 06 juli 2011 @ 07:41:
Gebruik je wel een IDE, elke gerenommeerde IDE had daar een kringel onder gezet.
Ik maak gebruik van Dreamweaver, voorheen gebruikt ik phpDesigner maar daar liep regelmatig de FTP vast. wat behoorlijk vervelend is. Dan moest ik elke keer weer phpDesigner opnieuw opstarten.

  • Cartman!
  • Registratie: April 2000
  • Niet online
Dreamweaver is geen IDE, en FTP heb je toch niet nodig direct? Lekker lokaal ontwikkelen met iets als XAMPP, ctrl-s en je kunt direct in je browser direct het resultaat zien. Kijk anders eens naar NetBeans of Eclipse, daar zijn vast ook wel FTP-plugins voor te vinden als je dat perse wil.

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 03-06 21:52
Cartman! schreef op woensdag 06 juli 2011 @ 14:08:
Dreamweaver is geen IDE, en FTP heb je toch niet nodig direct? Lekker lokaal ontwikkelen met iets als XAMPP, ctrl-s en je kunt direct in je browser direct het resultaat zien. Kijk anders eens naar NetBeans of Eclipse, daar zijn vast ook wel FTP-plugins voor te vinden als je dat perse wil.
Het ontwikkelen van websites doe ik meestal direct op een server, waar ookgelijk DA op staat en mail servers tot mn beschikking heb. Wanneer ik CTRL+S druk word het automatisch opgeslagen op de FTP server. En dan op mijn 2e monitor heb ik de browser open staan die met een zelf geschreven plugin automatisch de pagina ververst met het geuploade bestand.

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 13:25

MueR

Moderator Devschuur®

is niet lief

Devven op live servers is niet aan te raden. Een infinite loop sluipt er zo in namelijk. Daarbij heb je mail en DA helemaal niet nodig. PHP kan prima zelf mailen, ook op je lokale computer.

[Voor 13% gewijzigd door MueR op 06-07-2011 14:20]

Anyone who gets in between me and my morning coffee should be insecure.
Breng nu uw applicatie naar de kloot. Dat is veel beter! Nu samen met klootopslag. Voor maar €9,95. Doei doei!


  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 03-06 21:52
MueR schreef op woensdag 06 juli 2011 @ 14:19:
Devven op live servers is niet aan te raden. Een infinite loop sluipt er zo in namelijk. Daarbij heb je mail en DA helemaal niet nodig. PHP kan prima zelf mailen, ook op je lokale computer.
Oke, het is dus verstandiger om alles lokaal de devven. Maar als je meerdere projecten hebt moet ik alles in sub-dirs zetten. Of kan ik dan ook virtualhost gebruiken of is dat ook afgeraden?

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 13:25

MueR

Moderator Devschuur®

is niet lief

Gewoon virtualhosts en werken met je hosts file.

Anyone who gets in between me and my morning coffee should be insecure.
Breng nu uw applicatie naar de kloot. Dat is veel beter! Nu samen met klootopslag. Voor maar €9,95. Doei doei!


  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 03-06 21:52
MueR schreef op woensdag 06 juli 2011 @ 14:24:
Gewoon virtualhosts en werken met je hosts file.
Oke THX _/-\o_ Vandaag/morgen ga ik mijn systeem toch upgraden naar windows 7 (ik loop een klein beetje achter) en zal dan gelijk weer terug gaan naar phpDesigner (waar ik toen een licentie voor gekocht had) en XAMPP (of een andere webserver) installeren. Of een dualboot maken met debian :)

  • RobIII
  • Registratie: December 2001
  • Nu online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

MueR schreef op woensdag 06 juli 2011 @ 14:24:
Gewoon virtualhosts en werken met je hosts file.
Tssssk :N :P Of je zorgt gewoon voor een (interne) DNS ;)

Maarre @TS: was 't nou opgelost door die typo te fixen?

[Voor 12% gewijzigd door RobIII op 06-07-2011 14:32]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 03-06 21:52
RobIII schreef op woensdag 06 juli 2011 @ 14:31:
[...]

Tssssk :N :P Of je zorgt gewoon voor een (interne) DNS ;)

Maarre @TS: was 't nou opgelost door die typo te fixen?
Jazeker! het werkt helemaal. Bedankt!
Nu opzoek naar een goede IDE (phpDesigner ?) voor iedereen is dat weer anders waarschijnlijk. En is het aan te raden om met een SVN server erbij te werken? Of is dat af te raden ?

  • RobIII
  • Registratie: December 2001
  • Nu online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Dragon707 schreef op woensdag 06 juli 2011 @ 15:35:
En is het aan te raden om met een SVN server erbij te werken? Of is dat af te raden ?
Doe eens gek en verzin zelf eerst eens de pro's en cons?

(Maar goed: grote jongen als je met één (fatsoenlijke) con op de proppen komt b.t.w. (en dus niet: het moet geïnstalleerd worden ofzo))

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee