Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]Include czy Require?
Forum PHP.pl > Forum > Przedszkole
zdemotywowany
Patrzę sobie tutaj na forum na kody szanownych użytkowników i widzę, że wszyscy używają include. Z tego powodu czuję się ciut osamotniony. Czyżbym tylko ja używał require?

Jakie macie zdanie na temat używania Include, a Require(_once). Co preferujecie? Co jest lepsze?

Mi wydaje się, że lepsze jest Require, ale z tego co widzę to chyba Include ma większe wzięcie. Jednak zastanawia mnie to, ponieważ gdy użyjemy Include to brak wgrania pliku wywoła zapewne lawinę innych ostrzeżeń i błędów, podczas, gdy Require wyrzuci błąd i zakończy działanie skryptu.

Więc jak jest?
cycofiasz
Wszystko zależy czy zawartość "importowanego" skryptu jest niezbędna do działania skryptu czy nie. Wszelkie ustawienia i definicje funkcji daję w require a resztę w include. Sam musisz zdecydować czy coś jest niezbędne czy tylko opcjonalne
zdemotywowany
Cytat(cycofiasz @ 16.01.2012, 15:07:18 ) *
Wszystko zależy czy zawartość "importowanego" skryptu jest niezbędna do działania skryptu czy nie. Wszelkie ustawienia i definicje funkcji daję w require a resztę w include. Sam musisz zdecydować czy coś jest niezbędne czy tylko opcjonalne


Cytat
Jednak zastanawia mnie to, ponieważ gdy użyjemy Include to brak wgrania pliku wywoła zapewne lawinę innych ostrzeżeń i błędów, podczas, gdy Require wyrzuci błąd i zakończy działanie skryptu.
lukasz_p
Hej!

Ja również używam require(). A dokładniej to require_once(). Chyba jeszcze mi się nie zdarzyło, żeby potrzebował jakichś plików "opcjonalnie" smile.gif
Damonsson
Przy braku pliku jak będziesz wywoływał go: Include dostaniesz tylko warning, a przy Require dostaniesz fatal error, tym się różnią. Szybkością się nie różnią praktycznie wcale. Ale już z _once działa wolniej podobno. Kiedyś czytałęm o tym na tym forum, więc poszukaj, powinieneś znaleźć.
by_ikar
Tylko i wyłącznie requiere. Nie pamiętam kiedy ostatni raz użyłem include.. Wolę mieć kontrole nad moją aplikacją. A nie że sobie będzie działać jak chce.
-jarekbb-
zależy od pliku, ale zdecydowanie najczęściej używam require_once
markonix
Cytat(by_ikar @ 16.01.2012, 22:14:55 ) *
Tylko i wyłącznie requiere. Nie pamiętam kiedy ostatni raz użyłem include.. Wolę mieć kontrole nad moją aplikacją. A nie że sobie będzie działać jak chce.

Przypadkiem usuniesz plik ze skryptem .. rotatora banerów .. i lepiej żeby strona wczytała się tylko w nagłówku?
webdice
Cytat(Damonsson @ 16.01.2012, 19:42:37 ) *
(...) Ale już z _once działa wolniej podobno. Kiedyś czytałęm o tym na tym forum, więc poszukaj, powinieneś znaleźć.


Działa nieznacznie wolniej. Parser dodatkowo sprawdza czy dany plik został już dołączony.
by_ikar
Cytat(markonix @ 17.01.2012, 02:15:53 ) *
Przypadkiem usuniesz plik ze skryptem .. rotatora banerów .. i lepiej żeby strona wczytała się tylko w nagłówku?


Przypadkiem też mam obsługę błędów, która powiadamia mnie na maila że coś jest nie halo. Nie, zdecydowanie nie. Jest to sytuacja wyjątkowa i aplikacja nie powinna działać wcale. Albo dobrze ma działać, albo wcale.
webdice
Cytat(by_ikar @ 17.01.2012, 08:18:47 ) *
Przypadkiem też mam obsługę błędów, która powiadamia mnie na maila że coś jest nie halo. Nie, zdecydowanie nie. Jest to sytuacja wyjątkowa i aplikacja nie powinna działać wcale. Albo dobrze ma działać, albo wcale.


Masz złe podejście. Czy nie wyświetlanie się jakiegoś elementu jest tak wielkim problemem, aby nie wyświetlać strony? Tracisz potencjalnych klientów/użytkowników.
zdemotywowany
@webdice więc uważasz, że lepiej jak strona wczyta się tylko w części? Załóżmy, że taki FB traci (to oczywiście jest założenie!) kilka plików odpowiedzialnych za powstawanie strony. Czy nie lepiej, żeby strona nie wczytywała się w ogóle niż żeby wczytywała się w części i powstał z tego jakiś - brzydko mówiąc - burdel?
nospor
Wszystko zależy jak leży. Tutaj był przykład z rotatorem banerów i na spokojnie można wyświetlać stronę normalnie, nawet jak nie dziala rotator banerów.
Co innego gdyby zniknęła klasa odopowiedzialna za obsługę bazy danych, to już logiczne że nikt normalny nię będzie udawał, że serwis działa.

Podsumowując: wszystko jest dla ludzi i trzeba wiedzieć jak używać, a nie zawsze iść tylko w prawo.

Ja osobiście i tak zawsze używam require a nie include, gdyż wychodzę z założenia, że nie ma prawa mi nic zniknać od tak sobie z aplikacji. Jak znika, znaczy że coś się złego dzieje.
Ale podejście webdice w przypadku takiego rotatora banerów też jest ok.
by_ikar
Cytat
Masz złe podejście. Czy nie wyświetlanie się jakiegoś elementu jest tak wielkim problemem, aby nie wyświetlać strony? Tracisz potencjalnych klientów/użytkowników.


Rotatora banerów nie includował bym, jak już wink.gif te pliki które dołączam do swojej aplikacji są wymagane aby aplikacja działała. Takie rzeczy jak rotator banerów, rozwiązuje się w inne sposoby, nie ingerując samą aplikacje, jedynie dorzucając kod html tego rotatora gdzieś w jakiś szablon. Pozatym zawsze ustawiam raportowanie błędów na all, więc błąd który wygenerowałby brak "zależności" dla include i tak by został złapany przez errorHandlera.. Bo chyba błędów (warning) już raczej nie możemy od tak zostawić, więc tak czy siak, nawet jeżeli użyjemy include, to i tak błąd musimy jakoś obsłużyć, a z racji ze większość php póki co nie rzuca wyjątków, to nie możemy konkretnie obsłużyć inaczej tego konkretnego błędu. Także, czy to include czy require efekt końcowy będzie podobny - zatrzymanie aplikacji. A w takim wypadku to po co mi include? No chyba że ktoś nie obsługuje błędów typu notice/warning no to ok, sprawa (chyba) indywidualna..
webdice
Cytat(zdemotywowany @ 17.01.2012, 10:29:19 ) *
@webdice więc uważasz, że lepiej jak strona wczyta się tylko w części? (...)


Tak uważam. Weźmy na przykład to forum. Czy jakaś stratą będzie chwilowy brak listy aktywnych użytkowników czy też użytkowników obchodzących urodziny? Oczywiście że nie. Wyświetlasz forum bez statystyk, a administrator dostaje odpowiednią wiadomość.

Cytat(by_ikar @ 17.01.2012, 12:22:30 ) *
(...) Także, czy to include czy require efekt końcowy będzie podobny - zatrzymanie aplikacji. A w takim wypadku to po co mi include? No chyba że ktoś nie obsługuje błędów typu notice/warning no to ok, sprawa (chyba) indywidualna..


Pytanie w jaki sposób chcesz zatrzymać aplikacje. Wyświetlić pustą stronę? Wyświetlić użytkownikowi nic mu nie mówiący komunikat? Jeśli chcesz obsługę wyjątków (a powinieneś) to sprawdzaj czy plik istnieje.
by_ikar
Cytat
Jeśli chcesz obsługę wyjątków (a powinieneś) to sprawdzaj czy plik istnieje.

Można i tak zrobić, umknęło mi to jak pisałem..

Cytat
Pytanie w jaki sposób chcesz zatrzymać aplikacje. Wyświetlić pustą stronę? Wyświetlić użytkownikowi nic mu nie mówiący komunikat?


W przypadku użytkowników którzy obchodzą urodziny, mogę ich wczytywać w inny sposób niż include, np za pomocą ajaxu itp. Rozwiązań jest wiele, a ten include jest moim zdaniem całkowicie zbędny. Jak już administruje jakąś stroną, to powiadomienia o jakichś błędach śle na maila. Z racji że maili z telefonu więcej piszę i odbieram niż sms'ów. To jestem w stanie dość szybko zareagować, więc tych użytkowników dużo bym nie stracił. Już nie mówię o różnego rodzaju stronach które oferują monitorowanie konkretnych stron. Od bardzo dawna nie używam include, i raczej to się nie zmieni.. wink.gif

BTW w obiektowych fameworkach, raczej ręcznie się nie includuje niczego, a wszystko leci przez autoloader, żeby było łatwiej, i raczej zbędną funkcjonalnością była by możliwość ustalenia priorytetu klas, żeby któraś mogła zostać wczytana za pomocą include.
ShadowD
Och, człowieku o czym Ty mówisz, fw to tylko szkielet i dopisując jakieś klasy nie widzę innej możliwości jak inc/req, nie wspomnę o jakimś "nonsensie" wyświetlania strony użytkownikowi i doczytywania czegoś ajax'em - toż czysta głupota, po co zamęczać server jakimiś zbędnymi requestami.
webdice
Cytat(by_ikar @ 17.01.2012, 20:11:47 ) *
(...) W przypadku użytkowników którzy obchodzą urodziny, mogę ich wczytywać w inny sposób niż include, np za pomocą ajaxu itp. (...)


Rozwiązanie kojarzące się z organem odpowiedzialnym za wydalanie.

Cytat(by_ikar @ 17.01.2012, 20:11:47 ) *
(...) Rozwiązań jest wiele, a ten include jest moim zdaniem całkowicie zbędny. (...)


Nie wiem jak Ty, ale ja nie upycham wszystkich elementów w jednym widoku. Nie wyobrażam sobie żeby index zawierał dodatkowo statystyki i inne elementy.

Cytat(by_ikar @ 17.01.2012, 20:11:47 ) *
Jak już administruje jakąś stroną, to powiadomienia o jakichś błędach śle na maila. Z racji że maili z telefonu więcej piszę i odbieram niż sms'ów. (...)


Nie ważne czy to wiadomość e-mail, sms czy paralizator podłączony do przyrodzenia. Ważne aby wygodnie było administratorowi.

Cytat(by_ikar @ 17.01.2012, 20:11:47 ) *
(...) To jestem w stanie dość szybko zareagować, więc tych użytkowników dużo bym nie stracił. (...)


Lepiej zapobiegać niż leczyć. Jeśli uważasz że brak tak nieistotnego elementu jak lista użytkowników obchodzących urodziny to powód do niewyświetlania strony i odrywanie się od innych zajęć aby to naprawić od ręki to Twoja sprawa.

Cytat(by_ikar @ 17.01.2012, 20:11:47 ) *
(...) raczej zbędną funkcjonalnością była by możliwość ustalenia priorytetu klas, żeby któraś mogła zostać wczytana za pomocą include.


Kto mówi o ustalaniu priorytetów. Sprawdzasz czy plik istnieje, jeśli nie to podejmujesz akcje czy zatrzymać aplikacje i powiadomić użytkownika oraz administratora, czy pominąć dany element.
by_ikar
Dobra, widzę że macie swoje przyzwyczajenia/doświadczenia i nie bardzo chcecie je zmienić - ja również. Dla mnie jeżeli coś nie działa, to znaczy że nie działa. Póki co przez te kilka dobrych lat nie miałem sytuacji gdzie powiedzmy przypadkiem skasowałbym sobie plik i zapomniał o tym że skasowałem jednocześnie poszedł tego samego dnia na urlop, jadąc za granicę. Chcecie korzystać z include licząc na to że kiedyś może dzięki temu nie stracicie cennego użytkownika który właśnie dodawał komentarz - okej. Wolę jednak stosować swoje podejście wink.gif jak dla mnie koniec tematu i kończę tą polemikę z wami, bo to sensu niema, argumenty wasze są żadne, według was moje są żadne, no i jesteśmy kwita. EOT
webdice
Jak stracisz palca to chcesz umrzeć? Koniec.
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.