Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: include kontra include_once - zasada uzycia
Forum PHP.pl > Forum > PHP
elmozaur
Witajcie.
Poprosze o wsparcie mojej wiedzy gdyz nie moge sobie wyobrazic pewnych rzeczy.
Ogolnie wiem jak dziala include i include_once ale w praktyce nie wiem kiedy je stosowac.
Czy ktos moze "łopatologicznie" wytlumaczyc kiedy i w jakich wypadkach sie je stosuje.

Napisalem swoj prosty CMS jednak uzywam w nim tylko zwykle include a domyslam sie ze jak uzyje include_once to moze zwiekszyc sie wydajnosc cmsa.

Moj ogolny schemat dzialania jest taki:
- include konfiguracja strony z pliku;
- tworzenie polaczenia z baza;
- include wszystkich funkcji serwisu (ladowanie modulow, generowanie komunikatow, generowanie elementow dynamicznych);
- generowanie wszystkich elementow dynamicznych (daty, tytuly, statystyki itp)
- include templatki;
- generowanie wygladu strony.

I teraz mysle sobie tak (prosze o sprostowanie mojego myslenia):
plik index.php jest czytany zawsze wiec konfiguracja z pliku tez musi byc inkludowana zawsze. Bez funkcji serwis tez nie bedzie dzialal wiec tez trzeba inkludowac. Templatka tak samo... wiec co z tego moze byc inkludowane jednorazowo...

Prosze rowniez o wytlumaczenie czegos takiego skoro juz raz wyswietlilem taka strone, to po kliknieciu w dowolny link jakie elementy sa odswiezane ? czy calosc jest przeladowana ? czy moze serwer "pamieta" jakies fragmenty kodu questionmark.gif?

Moze ten temat powinien trafic do przedszkola ale mam nadzieje ze komus tez troche sie wyjasni.
Za wszelkie info z gory dziekuje i pozdrawiam
Grzegorz
skowron-line
Cytat(elmozaur @ 3.06.2009, 06:16:05 ) *
- include wszystkich funkcji serwisu (ladowanie modulow, generowanie komunikatow, generowanie elementow dynamicznych);

To napisz sobie funkcje i umieść ją sobie w pliku
a poźniej
  1. <?php
  2. include( 'funkcja.php' );
  3. include( 'funkcja.php' );
  4. ?>

Dostaniesz piękny komunikat o blędzie coś w stylu
Kod
Canot redeclarate .......

W tym przypadku include_once wchodzi w gre

Jeżeli wszystkie pliki podłączasz pod index.php to w nim wystarczy raz zaincludować plik konfiguracyjny nie ma potrzeby żeby go dodawać za każdym razem.
A przy odświeżaniu strony cały kod php jest przetwarzany raz jeszcze.
elmozaur
Cytat(skowron-line @ 3.06.2009, 08:22:24 ) *
Jeżeli wszystkie pliki podłączasz pod index.php to w nim wystarczy raz zaincludować plik konfiguracyjny nie ma potrzeby żeby go dodawać za każdym razem.
A przy odświeżaniu strony cały kod php jest przetwarzany raz jeszcze.


No wlasnie caly kod jest przetwarzany raz jeszcze ale z zainkludowanymi wczesniej konfigami i modulami czy serwer bedzie inkludowal wszystko raz jeszcze od nowa ?
nospor
include_once dotyczy danego zadania do strony.W danym konkretnym zadaniu include_once wykona sie raz
Kazde kolejne zadanie do strony (aplikacji na serwerze) powoduje przetwarzanie wszystkiego na nowo
elmozaur
Cytat(nospor @ 3.06.2009, 08:43:08 ) *
Kazde kolejne zadanie do strony (aplikacji na serwerze) powoduje przetwarzanie wszystkiego na nowo


Czyli skoro kazde klikniecie na link powoduje przeladowanie calosci i ponowne inkludowanie to czy mozna zaryzykowac inkludowanie wszystkiego poprzez include_once ?
nospor
nie, to wszystko zalezy.
Jesli chcesz by dany skrypt includowal sie za kazdym razem, gdy go includujesz, to uzywasz include. (np. zawiera jakas tabelke, ktora chcesz wyswietlic za kazdym razem gdy robisz include)
Gdy chcesz by dany skrypt zaincludowal sie tylko raz, to uzywasz include_once. (np. zawiera funkcje - a deklaracja funkcji moze byc tylko raz w skrypcie)

proste jak cep winksmiley.jpg
skowron-line
Jeżeli chcesz sobie wyświetlić np. system newsów i masz w pliku a.php zdefiniowany układ elementów ( tytuł, treść, autor, data ) to pobierając wszystkie newsy z bazy będziesz je wyświetlał w pętli i wtedy musisz użyć include ponieważ gdy użyjesz include_once wtedy wyświetl się tylko 1 dołączenie pliku mimo iż pętla obróci się powiedzmy 20 razy.
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.