Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]OOP na życiowym przykładzie?
alex19
post
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 7
Dołączył: 23.12.2005
Skąd: Wejherowo

Ostrzeżenie: (0%)
-----


Nadszedł najwyższy czas żeby nauczyć się programowania obiektowego. Przeczytałem wiele tutoriali w sieci, ale to niestety dla mnie za mało. Wszędzie piszą co to klasa i tak dalej, ale nigdzie nie znalazłem wykorzystania w praktyce. Nie ma co ukrywać, że na jednej klasie żadnej projekt inny niż "hello world" nie powstanie.

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:
  1. class mPDF{
  2. function WriteHTML(){
  3.  
  4. }
  5. function Output(){
  6. /*jaks magia */
  7. }
  8. }


Kolejną gotową klasą będzie PHPmailer, który w uproszczeniu będzie taki:
  1. class PHPmailer{
  2. public $Host;
  3. public $SMTPAuth;
  4. public $Username;
  5. public $Password;
  6. public $SMTPSecure;
  7. public $From;
  8. public $FromName;
  9. public $addAddress;
  10. public $addAddress;
  11. public $addReplyTo;
  12. public $WordWrap;
  13. public $Subject;
  14. public $Body;
  15.  
  16. function addAttachment($att){
  17. /* cos sie dzieje */
  18. }
  19.  
  20. function isSMTP(){
  21. }
  22.  
  23. function isHTML(true){
  24. }
  25.  
  26. function send() {
  27. /*wysylka */
  28. }
  29. }


Teraz mamy sobie naszą własną klasę, która powiedzmy odpowiada za stworzenie faktury. Coś się dzieje i w efekcie otrzymamy HTML.
  1. class faktura{
  2. function generujDokument(){
  3. /* nie ważne co i jak, ważny efekt ;) */
  4. return $html;
  5. }
  6. }


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.
  1. $fak = new faktura;
  2. $html = $fak->generujDokument();
  3.  
  4. $mpdf = new mPDF;
  5. $mpdf->WriteHTML($html);
  6. $pdf_file = 'filename.pdf';
  7. $mpdf->Output($pdf_file, 'F');
  8.  
  9. $mail = new PHPMailer;
  10. $mail->isSMTP();
  11. $mail->Host = 'smtp1.example.com;smtp2.example.com';
  12. $mail->SMTPAuth = true;
  13. $mail->Username = 'user@example.com';
  14. $mail->Password = 'secret';
  15. $mail->SMTPSecure = 'tls';
  16. $mail->From = 'from@example.com';
  17. $mail->FromName = 'Mailer';
  18. $mail->addAddress('joe@example.net', 'Joe User');
  19. $mail->WordWrap = 50;
  20. $mail->addAttachment($file_name);
  21. $mail->isHTML(true);
  22. $mail->Subject = 'Here is the subject';
  23. $mail->Body = 'This is the HTML message body <b>in bold!</b>';
  24. $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
  25. $mail->send();


To nie jest ładne rozwiązanie i najlepiej było by dodać do naszej klasy metodę
  1. function wyslijFakture(){
  2. /*pdf*/
  3. /*wyslanie maila*/
  4. }


Tylko pojawia się pytanie jak to zrobić?

Ten post edytował alex19 9.08.2014, 07:09:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Wazniak96
post
Post #2





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

Ostrzeżenie: (0%)
-----


Zobacz co kolega @pyton_000 dał jako argument metody wyslijFakture. Znajduje się tam taka fraza jak "PHPmailer". Jest to rzutowanie danych. To znaczy, że metoda ta przyjmie jako argument tylko obiekt klasy PHPMailer.

Ogólnie poczytaj o takim wzorce jak wstrzykiwanie zależności (Dependency Injection) (IMG:style_emoticons/default/wink.gif)

Ten post edytował Wazniak96 9.08.2014, 18:41:51
Go to the top of the page
+Quote Post
alex19
post
Post #3





Grupa: Zarejestrowani
Postów: 172
Pomógł: 7
Dołączył: 23.12.2005
Skąd: Wejherowo

Ostrzeżenie: (0%)
-----


Cytat(Wazniak96 @ 9.08.2014, 19:41:14 ) *
Zobacz co kolega @pyton_000 dał jako argument metody wyslijFakture. Znajduje się tam taka fraza jak "PHPmailer". Jest to rzutowanie danych. To znaczy, że metoda ta przyjmie jako argument tylko obiekt klasy PHPMailer.

Ogólnie poczytaj o takim wzorce jak wstrzykiwanie zależności (Dependency Injection) (IMG:style_emoticons/default/wink.gif)


Poczytam, ale zanim to zrobię to zapytam (IMG:style_emoticons/default/wink.gif)

Czy to jest obowiązkowe czy też jako "zabezpieczenie"i dobra praktyka, czy można by było dać jako argument metody tylko $mail.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 21:44