Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 371 Pomógł: 18 Dołączył: 23.11.2008 Ostrzeżenie: (0%)
|
Witam. Rozpocząłem żmudne zagłębianie się w tajniki programowania zorientowanego obiektowo, przeczytałem kilka artykułów i pomyślałem że najlepiej jest sprawdzić swoją wiedzę w praktyce. Tak oto powstała klasa do uploadu plików. Przyznam się, że pobrałem sobie podobną klasę z phpclasses.org, aby zobaczyć mniej więcej jak to wygląda. Chciałbym Was zapytać czy ma to coś w ogóle wspólnego ze stylem OOP ?
class.upload.php
index.php
Mam co do tego pytania : 1) Wiem że w stylu OOP są wyjątki. Czy to, jak ja je zastosowałem to odpowiednia metoda? Czy jest ich za dużo ? Bo mi nie pasują za bardzo ... 2) Czy wyjątki powinno się dawać do udanych operacji ? 3) Czy w konstruktorze wykonywać metodę 'upload' czy odwołać się do niej poza konstruktorem, już w pliku index? 4) Jeśli mam operacje na bazie danych bądź plikach tekstowych to czy tworzyć destruktor do ich zamykania ? To takie ogólne pytania i byłbym bardzo wdzięczny gdyby ktoś mi to 'sprawdził', wytknął błędy i polecił dobrą literaturę (IMG:style_emoticons/default/smile.gif) Dziękuję i pozdrawiam. Ten post edytował Mefiuu 3.08.2011, 20:46:10 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Cytat Mam teraz kolejne pytanie, czy poprawnie został użyty kod : Tak. Generalnie o to właśnie chodzi.Jednak nadal pewne rzeczy są zrobione źle / w nienajlepszy sposób: 1. Zacznij korzystać z autoloaderów (jest wiele dobrych, gotowych rozwiązań). 2. Przykładaj większą uwagę do nazewnictwa. Nie ma to wpływu na działanie programu, ale zdecydowanie ułatwia korzystanie z niego. Zmienna $upload powinna raczej nazywać się $uploader w tym przypadku, $file (nazwa indeksu z tablicy $_FILES) jest dosyć myląca. W takim kontekście sugeruje ona raczej nazwę wgrywanego pliku czy coś takiego. 3. Jeżeli metoda checkType() jest wyłącznie do użytku wewnętrznego powinieneś ją oznaczyć jako niepubliczną. 4. Jak już wspomniałem: http://www.php.net/manual/en/features.file-upload.errors.php - to nieco oczyści kod. 5. Dlaczego metoda checkType(), której nazwa dosyć jasno wskazuje na to, że metoda sprawdza czy typ mime pliku jest odpowiedni zajmuje się jakimiś pierdołami w stylu sprawdzania błędów z $_FILES? To zadanie dla innej metody. 6. Komentarz chyba zbędny? 7. Nadal używasz bezpośrednio klasy Exception. Nie powinieneś tego robić. 8. $_FILES['...']['type'] nie jest wiarygodnym źródłem danych - może być dowolnie modyfikowane. W tej chwili nie ma problemu by wgrać przykładowo plik PHP przez ten skrypt. Cytat Jednak dalej nie wiem, jak zmienić ten główny blok try-catch. Przykład ilustrujący o co chodziło:
Cytat Ponadto, jak Crozin wspomniałeś, nie powinienem stosować tablic globalnych, tylko je przekazywać do obiektu. W jaki sposób (przykładowo) mogę przekazać do obiektu tablicę $_FILES? Tak jak masz obecnie nie jest najgorzej. Wątpię byś musiał się na chwilę obecną zamartwiać nad problemem uploadu pliku, który nie jest obsługiwany przez $_FILES, więc możesz zostawić jak jest.
|
|
|
|
Mefiuu [php]Początki OOP 3.08.2011, 20:42:33
konole Tak na początek: najlepiej, jeśli klasa nie zwraca... 3.08.2011, 21:05:58
Mefiuu czyli rozumiem że wyłapywać w index? Ale nie bardz... 3.08.2011, 21:08:04
Spawnm $_FILES['plik']['error'] - i ... 3.08.2011, 21:22:16
Crozin Na początek dwie ogólne uwagi:
1. Nie mieszaj języ... 3.08.2011, 21:26:00
Mefiuu Bardzo dziękuję za odpowiedzi i pomoc ! Crozin... 4.08.2011, 13:47:48
Mefiuu Dziękuję, chyba jak na razie poprawiłem znacząco m... 4.08.2011, 19:40:54 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 16:39 |