![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Bawię się cały czas OOP, ponieważ nudzi mnie używanie gotowych frameworków, a tak to przynajmniej się człowiek czegoś nauczy. I mam pytanie, czy idę w dobrym kierunku w OOP, dla przykładu podaje próbkę działającego kodu:
Ta klasa ma za zadanie wylosowanie jednego zdania, spośród 3tys zdań i wywalenie go na ekran w tagu h1 Ten post edytował ExPlOiT 21.06.2009, 02:23:47 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Twój kod nie jest zły, ale ja bym to zrobił mniej więcej tak:
Kod class content { public $zdania; public $tablica; public $wylosowane; public function __construct($file){ $this->tablica = file($file); } public function getContent(){ foreach($this->tablica as $key) { $zdania[] = $key; } return $this->zdania = $zdania; } public function shuffle(){ shuffle($this->zdania); $wylosowane = $this->zdania; return $this->wylosowane = $wylosowane[0]; } public function view(){ $this->getContent(); $this->shuffle(); return '<h1>'.$this->wylosowane.'<h1>'; } } $new=new content('words.txt'); echo $new->view(); Ponad to można by jeszcze wczytać zawartośc pliku do zmiennej i potem za pomocą explode() podzielić to na zdania (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Zrobiłem mały przykład (tak na szybko dlatego nazwy atrybutów są trochę pomieszane): Kod class content
{ public $zdania; public $tablica; public $wylosowane; public function __construct($file){ $this->tablica = file_get_contents($file); } public function getContent(){ } public function explode(){ $zdania = explode('. ', $this->tablica); return $this->zdania = $zdania; } public function shuffle(){ shuffle($this->zdania); $wylosowane = $this->zdania; return $this->wylosowane = $wylosowane[0]; } public function view(){ $this->explode(); $this->shuffle(); return '<h1>'.$this->wylosowane.'<h1>'; } } $new=new content('words.txt'); echo $new->view(); Ten post edytował gcdreak 21.06.2009, 07:28:42 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Cytat Twój kod nie jest zły, ale ja bym to zrobił mniej więcej tak: Co programista to inny styl programowania (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Cytat Ponad to można by jeszcze wczytać zawartośc pliku do zmiennej i potem za pomocą explode() podzielić to na zdania Też tak chciałem zrobić, ale zrezygnowałem z tego sposobu. W tym kodzie co napisałeś public function getContent(), w ogóle nie jest potrzebne bo tego nie użyłeś, ale z tym explode ciekawe rozwiązanie. Ten post edytował ExPlOiT 21.06.2009, 07:32:49 |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Kod tutaj jest conajmniej zagmatwany i nieczytelny. Nie prosciej zrobic mieszanie zdan zaraz po zaladowaniu, a potem pobierac nastepne z tablicy? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A ja polecam rozpoczęcie zabawy z czymkolwiek od włączenia raportowania wszystkich błędów - masz trochę złych praktyk.
content::getContent - zmień nazwę tej metody. Tak się już przyjęło, że metody na get/set pełnią rolę getterów i setterów i wyłącznie dla czytelności, przejrzystości, a przede wszystkim łopato-logiczności* kodu dobrze jest się trzymać takich zasad. Zero jakiekolwiek możliwości konfiguracji. Dane muszą być ładowane z jednego określonego pliku, wyświetlane są w jeden sposób. Pozatym... tutaj to takie OOP na siłe: Tak więc, proponowałbym jakieś nieco bardziej zaawansowane rzeczy robić. * - ponoć to się z "-" pisze wg Opery (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Crozin) Tak więc, proponowałbym jakieś nieco bardziej zaawansowane rzeczy robić. Jakie rzeczy masz na myśli? Z chęcią zrobiłbym coś trudniejszego, zawsze to idzie się nowych rzeczy nauczyć. Cytat(Crozin) A ja polecam rozpoczęcie zabawy z czymkolwiek od włączenia raportowania wszystkich błędów - masz trochę złych praktyk. Np. jakie, fakt faktem wyświetlanie błędów mogę zrobić przy pomocy Exceptions Ten post edytował ExPlOiT 21.06.2009, 13:29:03 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Chodziło mi o raportowanie błędów zgłaszanych przez interpreter PHP. A jakie masz te brzydkie praktyki? A np.:
A gdzie definicja, że $zdania to tablica? Poza tym (pisałem to już chyba Tobie) nie mieszaj polskiego i angielskiego. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Crozin) A gdzie definicja, że $zdania to tablica? Masz na myśli coś takiego:
Cytat(Crozin) Poza tym (pisałem to już chyba Tobie) nie mieszaj polskiego i angielskiego. Tak pisałeś, muszę to zmienić i używać angielskiego. Cytat(Crozin) Chodziło mi o raportowanie błędów zgłaszanych przez interpreter PHP. Czyli zamiast
Robić:
O tym mowa? Ten post edytował ExPlOiT 21.06.2009, 15:12:53 |
|
|
![]()
Post
#9
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
Exceptions to klasa wyjątków nie błędów. błędu to TU
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Exceptions to klasa wyjątków nie błędów. błędu to TU No to teraz wiem o co chodzi (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Raportowanie błędów to: http://nospor.pl/php-faq-n29.html#faq-2 (dodaj sobie jeszcze E_STRICT bo to jest wyłączone spod E_ALL). Mam na myśli:
Ok dzięki za info (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Oprócz tego, jeszcze widzisz jakieś moje złe nawyki? |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 365 Pomógł: 8 Dołączył: 16.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pytałeś o bardziej zaawansowane rzeczy.
Wczoraj wpadłem na pomysł, żeby zrobić klasę FiguryGeometryczne, która będzie wykorzystywać GD library. Niestety jakoś tak zająłem się czym innym. Jeśli Ci się chcę i masz trochę czasu to możesz stworzyć coś takiego i podzielić się kodem, oczywiście (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
[...] Jeśli Ci się chcę i masz trochę czasu to możesz stworzyć coś takiego i podzielić się kodem, oczywiście (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) To dla mnie raczej nie wykonalne w OOP. |
|
|
![]()
Post
#14
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
LOL A to niby dlaczego? Myślę, że dlatego, że w OOP nie jestem biegły, i znam jedynie podstawy co widać po kodzie który jest w pierwszym poście, choć z dnia na dzień coraz więcej się uczę, bo dużo trenuje pisząc różne klasy w OOP. Chociaż nie powiem, zawsze można spróbować, przynajmniej w trakcie tworzenia tej klasy, nauczę się nowych rzeczy, które, być może przydadzą się w przyszłości. Mój tryb nauczania wygląda tak że np. wymyślę sobie jakiś serwis, np ogłoszenia i piszę całe oskryptowanie w OOP od zera, dzięki czemu według mnie utrwalam sobie zdobytą wiedzę, i uczę się nowych rzeczy. Podobno najlepiej uczyć się programować obiektowo, pisząc trudniejsze i bardziej skomplikowane rzeczy. Jeżeli nie mam pomysłu na serwis, to rozbudowuje sobie, wcześniej napisane klasy, lub tworze nowe które mają jakiś konkretny cel i zadanie. Ten post edytował ExPlOiT 21.06.2009, 22:20:05 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
A czy ktoś ci każe, tłumaczyć mi wszystko od zera? Napisałem gdzieś coś takiego? Po za tym jak nie masz nic mądrego do powiedzenia w temacie, to lepiej milcz, zamiast pisać bez sensowne posty.
A Ty jak zaczynałeś programować, to od razu byłeś super programistą wiedzący wszystko bez jakiejkolwiek pomocy? #Widzę że nawet posta wykasowałeś Ten post edytował ExPlOiT 21.06.2009, 22:28:48 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
ja nie zadawalem tak prostackich pytan na forum ... od tego sa ksiazki i uczenie sie na cudzym kodzie ktory mozesz przeanalizowac... I to według Ciebie jest powód, żeby każdego od razu zmieszać z błotem? belliash brawo drugi post wykasowałeś, oby tak dalej. Nie piszę kolejnego posta bo kolejnego wykasujesz, książkę mam ale niema w niej zbyt wiele informacji, dokładnie ta http://helion.pl/ksiazki/probph.htm I widzę że już 3 posta wykasowałeś, tego w którym odpowiadałeś na ten w którym piszę. Ten post edytował ExPlOiT 21.06.2009, 22:40:11 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 04:51 |