Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Kiedy używać php obiektowego
Forum PHP.pl > Forum > Przedszkole
shimizu
Chciałbym sie dowiedzieć kiedy opłaca sie uzywać obiektowego php. W jakich elementach strony itp.
Co to znaczy OOP?
!*!
Cytat(shimizu @ 8.06.2012, 23:13:41 ) *
Chciałbym sie dowiedzieć kiedy opłaca sie urzywać obiektowego php. W jakich elementach strony itp.
Co to znaczy OOP?


Zawsze.
http://pl.wikipedia.org/wiki/Programowanie_obiektowe
shimizu
no ale w jakich elementach podstawowych strony mi się opłaca to uzywać takie jest pytanie.
ghastblood
oop - object-oriented programming - programowanie obiektowe wystarczy zapytać się wujka google. Dlaczego warto programować obiektowo ? hmm wydaje mi się że ma to wpływ na czytelność kodu, łatwiejsza konserwacja kodu oraz możliwość wykorzystania klas w innych projektach. Jak się mylę proszę mnie poprawić. Nie spotkałem się z mieszanymi stronami trochę proceduralnego trochę obiektowego.
kamil4u
W bardzo małych projektach typu wizytówka strony, gdzie PHP w zasadzie jest wykorzystany tylko do obsługi formularza można sobie darować obiektówkę, ale to tylko teoria... W rzeczywistości jak raz napiszesz sobie takie coś obiektowo to później będziesz mógł wykorzystać ten sam kod w wielu projektach i nie będziesz się zastanawiał czy to mały, czy duży projekt, gdyż po prostu będziesz to już miał napisane i tylko skorzystasz z gotowego kodu. Wykorzystywanie kodu napisanego obiektowo w innych projektach jest znacznie wygodniejsze i zwyczajnie szybsze, niż wykorzystanie tego samego kodu napisanego strukturalnie.

Choć główny powód, dla którego piszę w tym temacie, to ten, że masz bardzo rażący błąd ortograficzny w poście i w tytule tematu: używać !
shimizu
3 razy pisałem to słowo i się zastanawiałem czy dobrze ;p
Doszlifuje strukture i wezme się za obiektowe biggrin.gif
!*!
Cytat(shimizu @ 8.06.2012, 23:18:52 ) *
no ale w jakich elementach podstawowych strony mi się opłaca to uzywać takie jest pytanie.


W każdej. Jeśli myślisz o PHP na poważnie, to nie ma podziału struktura/obiektowość, jest tylko obiektówka, nie dostaniesz pracy bo znasz php strukturalnie, wszyscy szukają programistów oop.
konole
Cytat(!*! @ 9.06.2012, 08:53:06 ) *
W każdej. Jeśli myślisz o PHP na poważnie, to nie ma podziału struktura/obiektowość, jest tylko obiektówka, nie dostaniesz pracy bo znasz php strukturalnie, wszyscy szukają programistów oop.

Taaa... a najczęściej spotyka się po tym programistów, którzy wiedzą, co to OOP i łamią wszelkie konwencje, szczególnie we frameworkach...
!*!
Cytat(konole @ 9.06.2012, 10:00:06 ) *
Taaa... a najczęściej spotyka się po tym programistów, którzy wiedzą, co to OOP i łamią wszelkie konwencje, szczególnie we frameworkach...


A jakiś przykład? I jakich FW?
shimizu
nie chce zakładać nowego tematu dlatego tutaj się zapytam
Napisałem sobie przykład z ksiązki:
  1. <?php
  2.  
  3. class shimizu
  4. {
  5. function __construct($par)
  6. {
  7. echo 'Wywolany z parametrem'. $par.'<br />';
  8. }
  9. }
  10.  
  11. $a = new shimizu('pierwszym');
  12. $a = new shimizu('drugim');
  13. $a = new shimizu();
  14. echo 'aa';
  15.  
  16. ?>

I wyświetla mi tylko aa...
konrados
Nie widzę tu błędu, upewnij się, że masz włączone wyświetlanie błędów i ostrzeżeń: http://forum.php.pl/index.php?showtopic=199639
!*!
I zamień sobie w edytorze ustawienie znaków z tabulacji na spacje (3 lub 4).
toffiak
Cytat(!*! @ 9.06.2012, 10:23:07 ) *
A jakiś przykład? I jakich FW?


Zgaduję że chodzi o zbyt przerośnięte kontrolery i logikę aplikacji w widoku, to najczęściej spotykanej błędy początkujących.
shimizu
Cytat(konrados @ 9.06.2012, 11:49:11 ) *
Nie widzę tu błędu, upewnij się, że masz włączone wyświetlanie błędów i ostrzeżeń: http://forum.php.pl/index.php?showtopic=199639

Jak napisze coś z błędem to mi wyświetla więc jest ok. Według tego co w książce to powinno mi wyświetlić:

Cytat
Wywolany z parametrem pierwszym
Wywolany z parametrem drugim
Wywolany z parametrem
aa



Cytat(!*! @ 9.06.2012, 11:50:30 ) *
I zamień sobie w edytorze ustawienie znaków z tabulacji na spacje (3 lub 4).


A po co? I gdzie to w notpadzie ++ jest
!*!
I w zasadzie z jakiej książki się uczysz? Odstaw ją, bo skoro w przykładzie konstruktora jest echo, to już coś jest z nią nie tak (przykład przykładem, ale logika powinna być). Zajrzyj tu http://pl.wikibooks.org/wiki/Php w miare dobrze opisane.

Cytat
A po co? I gdzie to w notpadzie ++ jest


Po to że jak ktoś chce skopiować Twój kod z forum, to nie jest on rozwalony u niego w edytorze, tabulacja nie jest stała i uzależnia się od fontu, a spacja jest zawsze taka sama, przez co kod wygląda u każdego identycznie, jest zachowane formatowanie itd. Nie wiem gdzie jest to w notepad++, poszukaj w opcjach, powinno być "zamieniaj tab na spacje" czy coś w tym stylu.

Cytat
Jak napisze coś z błędem to mi wyświetla więc jest ok. Według tego co w książce to powinno mi wyświetlić:

I wyświetla się, kod jest wykonywany.
shimizu
Cytat(!*! @ 9.06.2012, 11:56:37 ) *
I w zasadzie z jakiej książki się uczysz? Odstaw ją, bo skoro w przykładzie konstruktora jest echo, to już coś jest z nią nie tak (przykład przykładem, ale logika powinna być). Zajrzyj tu http://pl.wikibooks.org/wiki/Php w miare dobrze opisane.


No właśnie perzykłady z tej strony są dziwne. Ucze się wszystkiego na przykładach a tutaj jak go skopuje to odrazu błąd...
!*!
Jaki błąd i jaką masz wersje php?
konrados
@shimizu: aż sprawdziłem i działa, pozostaje tylko jedna opcja: pracujesz na muzealnym php 4.x - tam konstruktory inaczej się tworzyło.
shimizu
  1. <?php
  2.  
  3. class Person
  4.  
  5. {
  6.  
  7. public $name;
  8.  
  9. public $surname;
  10.  
  11.  
  12.  
  13. public function setFullName($name, $surname)
  14.  
  15. {
  16.  
  17. $this->name = $name;
  18.  
  19. $this->surname = $surname;
  20.  
  21. } // end setFullName();
  22.  
  23.  
  24.  
  25. public function getFullName()
  26.  
  27. {
  28.  
  29. return $this->name.' '.$this->surname;
  30.  
  31. } // end getFullName();
  32.  
  33. } // end Person;
  34.  
  35.  
  36.  


Cytat
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in D:\Programy\WebServ\httpd-users\aaa\index.php on line 9
konrados
Teraz to jest pewne, że pracujesz na b. starym php, zrób update do 5.x
shimizu
Cytat(shimizu @ 9.06.2012, 11:41:45 ) *
  1. <?php
  2.  
  3. class shimizu
  4. {
  5. function __construct($par)
  6. {
  7. echo 'Wywolany z parametrem'. $par.'<br />';
  8. }
  9. }
  10.  
  11. $a = new shimizu('pierwszym');
  12. $a = new shimizu('drugim');
  13. $a = new shimizu();
  14. echo 'aa';
  15.  
  16. ?>


No teraz wyświetla mi już więcej biggrin.gif
Cytat
Wywolany z parametrem pierwszym
Wywolany z parametrem drugim

Warning: Missing argument 1 for shimizu::__construct(), called in D:\Programy\WebServ\httpd-users\a\index.php on line 13 and defined in D:\Programy\WebServ\httpd-users\a\index.php on line 5
Wywolany z parametrem
aa
!*!
Wyświetla Ci błąd bo nie podałeś parametru konstruktora, nie ma nic o tym w książce?
Możesz zrobić ustwienie domyślnie:
  1. function __construct($par=null)
shimizu
to w sumie juz nie ważne bo wreszcie cos mi wyświetla biggrin.gif Ale dzięki
Wazniak96
Jak kazdy chcialbym dodac cos od siebie. wink.gif
No więc tak, pracowanie na class jest bardzo wygodne, pewnie juz w krotce się o tym dowiesz. Ja pracuję na dość malym projektem jakim są CzatyGG, a jednak class pozwolilo mi znacznie ulatwic prace. Skoro zaczynasz nad tym pracę na początek proponuje nauczyc się podpięcia class do pliku ze stronką. U mnie wygląda to tak:
  1. require_once("funkcje.php");
  2. $bot = new bot("$baseHost", "$baseUser", "$basePass", "$baseName");
Takie połączenie daje odrazu połączenie z MySql tak aby działało rowniez w pliku jak i w class.
Następnie w pliku funkcje.php tworzymy class.
  1. <?php
  2.  
  3. class bot {
  4.  
  5. function __construct($sqlhost, $sqluser, $sqlpass, $sqlname) {
  6.  
  7. mysql_connect($sqlhost, $sqluser, $sqlpass);
  8. mysql_select_db($sqlname);
  9. }
  10.  
  11. }


Po takim oto połączeniu funkcje wywoływane bd poprzez $bot->funkcja();
Mam nadzieję, ze w jaki kolwiek sposob pomogłem. wink.gif
!*!
@up to zły nawyk.

1. nazwa bot nie wskazuje na połączenie z bazą
2. plików w programowaniu obiektowym nie wgrywamy ręcznie przez include czy require, tylko stosuje się loadery np. SPL dostępne w PHP
3. dlaczego w konstruktorze miałoby to tak być, a nie mogę utworzyć połączenia z bazą w nim, szczególnie że tylko wtedy byłoby dokonywane połączenie, a nie zawsze.
4. do łączenia z bazą stosuj PDO, a nie mysql_* bo jest wycofywane.
5. i obiekt $bot, miałby być globalny? Tylko po to żeby się z bazą połączyć? to nie przejdzie wink.gif przy projektach z cyklu "hello world" tak, ale nie gdzie indziej.
Wazniak96
Hmmm dzięki za rady. Dzis poczytam o tym. wink.gif
A przykład dalem taki bo wydaje mi się ze jest to bardzo łatwe, a ze kolega jest początkujący.. tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.