Czy ktoś może polecić jakiś dobry tutorial gdzie były by jakieś zaaansowane przykłady programowania obiektowego?
Czego szukam? Na przykład sposobu na rozwiązanie takiego problemu:
Dajmy na to że mamy 3 klasy. Jedną swoją i dwie gotowe.
Klasa gotowa to np mPDF, która dla uproszczenia będzie wyglądała tak:
class mPDF{ function WriteHTML(){ } function Output(){ /*jaks magia */ } }
Kolejną gotową klasą będzie PHPmailer, który w uproszczeniu będzie taki:
class PHPmailer{ public $Host; public $SMTPAuth; public $Username; public $Password; public $SMTPSecure; public $From; public $FromName; public $addAddress; public $addAddress; public $addReplyTo; public $WordWrap; public $Subject; public $Body; function addAttachment($att){ /* cos sie dzieje */ } function isSMTP(){ } function isHTML(true){ } function send() { /*wysylka */ } }
Teraz mamy sobie naszą własną klasę, która powiedzmy odpowiada za stworzenie faktury. Coś się dzieje i w efekcie otrzymamy HTML.
class faktura{ function generujDokument(){ /* nie ważne co i jak, ważny efekt ;) */ return $html; } }
Co bym chciał zrobić? Chciałbym wygenerować html z fakturą, następnie zrobić z tego pdf'a i wysłać go mailem do klienta. Pojawia się pytanie jak?
Oczywiście możemy potworzyć po koleji obiekty i "proceduralnie" wysłać naszą fkaturę, ale przecież nie o to chodzi.
$fak = new faktura; $html = $fak->generujDokument(); $mpdf = new mPDF; $mpdf->WriteHTML($html); $pdf_file = 'filename.pdf'; $mpdf->Output($pdf_file, 'F'); $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = 'smtp1.example.com;smtp2.example.com'; $mail->SMTPAuth = true; $mail->Username = 'user@example.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->From = 'from@example.com'; $mail->FromName = 'Mailer'; $mail->addAddress('joe@example.net', 'Joe User'); $mail->WordWrap = 50; $mail->addAttachment($file_name); $mail->isHTML(true); $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body <b>in bold!</b>'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; $mail->send();
To nie jest ładne rozwiązanie i najlepiej było by dodać do naszej klasy metodę
function wyslijFakture(){ /*pdf*/ /*wyslanie maila*/ }
Tylko pojawia się pytanie jak to zrobić?