/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Include vs Require
Fra : TH


Dato : 17-08-02 15:58

Hej,

Som jeg forstår det er "Include" og "Require" det samme, blot cacher
"Require"...således en god ide hvis man bruger en menu som altid er på
siderne...

Men hvor lang tid holder cachen? Kan man tvinge en "Reload"?

Mvh
TH



 
 
Thomas Lindgaard (17-08-2002)
Kommentar
Fra : Thomas Lindgaard


Dato : 17-08-02 17:07

"TH" <th@cogito.dk> wrote in news:3d5e645b$0$88405
$edfadb0f@dspool01.news.tele.dk:

> Som jeg forst†r det er "Include" og "Require" det samme

Det er ikke helt korrekt - forskellen på de to er beskrevet på
php.net/require:

require() and include() are identical in every way except how they handle
failure. include() produces a Warning while require() results in a Fatal
Error.

Mvh.
/Thomas

Niels Andersen (17-08-2002)
Kommentar
Fra : Niels Andersen


Dato : 17-08-02 17:35

Thomas Lindgaard wrote in
<Xns926DB853C76C2thomasitsnedkerendk@193.88.15.201>:
>> Som jeg forst†r det er "Include" og "Require" det samme
> require() and include() are identical in every way except how they handle
> failure. include() produces a Warning while require() results in a Fatal
> Error.

Jeg er for doven til at se efter, men jeg mener der er (eller har været) en
forskel mere, nemlig hvornår det bliver udført. Resultatet er:

if (false) {
include($fil1);
require($fil2);
}

Her vil $fil2 blive hentet ind, men ikke udført.
$fil1 vil være uberørt.

Det er især relevant, hvis filen ligger på en anden maskine, og fx. bliver
hentet med http.

Og så vist også noget med at:

include($fil1);
include($fil1);
require($fil2);
require($fil2);

Her vil den ene fil blive hentet én gang, den anden to gange. Begge vil dog
blive indsat to gange.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Michael Rasmussen (17-08-2002)
Kommentar
Fra : Michael Rasmussen


Dato : 17-08-02 17:50

On Sat, 17 Aug 2002 18:34:47 +0200, Niels Andersen wrote:

> Jeg er for doven til at se efter, men jeg mener der er (eller har
> været) en forskel mere, nemlig hvornår det bliver udført.
require er betingelsesløs includering. Dvs. det bliver hentet før
alt andet bliver udført, mens include først hentes, når fortolkeren
når til instruktionen i scriptet. Dette betyder, at include kan
bruges i betingelser, mens require ikke kan. Et eksempel:

if (bruger == 'admin')
   include (adminscript.php);
else
   include (userscript.php);

--
Hilsen/Sincerely
Michael Rasmussen

"C makes it easy to shoot yourself in the foot; C++ makes it harder,
but when you do, it blows away your whole leg." - Bjarne Stroustrup
-------------------------------------------------------------------
Fjern NOSPAM fra min adresse, for at sende mig en mail

Niels Andersen (17-08-2002)
Kommentar
Fra : Niels Andersen


Dato : 17-08-02 18:28

Michael Rasmussen wrote in <pan.2002.08.17.16.49.29.65888.3506@datanom.net>:
> require er betingelsesløs includering. Dvs. det bliver hentet før
> alt andet bliver udført, mens include først hentes, når fortolkeren
> når til instruktionen i scriptet.

Yeps, det var det jeg sagde (eller i hvert fald mente).

> Dette betyder, at include kan
> bruges i betingelser, mens require ikke kan.

Nej. require() bliver godt nok hentet betingelsesløst, men bliver ikke
nødvendigvis udført.

Ekspempel:

<admin.php>
admin.php
</admin.php>

<user.php>
user.php
</user.php>

<test.php>
include, admin:
<?
if (true)
include ("admin.php");
else
include ("user.php");
?>
<br>
include, user:
<?
if (false)
include ("admin.php");
else
include ("user.php");
?>
<br>
require, admin:
<?
if (true)
require ("admin.php");
else
require ("user.php");
?>
<br>
require, user:
<?
if (false)
require ("admin.php");
else
require ("user.php");
?>
<br>
</test.php>

<output>
include, admin: admin.php
include, user: user.php
require, admin: admin.php
require, user: user.php
</output>

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Michael Rasmussen (17-08-2002)
Kommentar
Fra : Michael Rasmussen


Dato : 17-08-02 18:38

On Sat, 17 Aug 2002 19:28:21 +0200, Niels Andersen wrote:

>> Dette betyder, at include kan
>> bruges i betingelser, mens require ikke kan.
>
> Nej. require() bliver godt nok hentet betingelsesløst, men bliver
> ikke nødvendigvis udført.
Har lige opdaget, at udførslen af require er ændret i php 4.2. Min
forklaring relaterede sig til php < 4.2 - har ikke prøvet version
4.2 endnu.
--
Hilsen/Sincerely
Michael Rasmussen

"C makes it easy to shoot yourself in the foot; C++ makes it harder,
but when you do, it blows away your whole leg." - Bjarne Stroustrup
-------------------------------------------------------------------
Fjern NOSPAM fra min adresse, for at sende mig en mail

Dennis Hansen (17-08-2002)
Kommentar
Fra : Dennis Hansen


Dato : 17-08-02 18:34

Michael Rasmussen <mir@datanom.net> wrote:

> require er betingelsesløs includering.

Ikke på min php 4.1.2, det har sikkert været sådan tidligere.


Mvh
Dennis


Hans Lund (20-08-2002)
Kommentar
Fra : Hans Lund


Dato : 20-08-02 13:03

Thomas Lindgaard wrote:

>Det er ikke helt korrekt - forskellen på de to er beskrevet på
>php.net/require:
>
>require() and include() are identical in every way except how they handle
>failure. include() produces a Warning while require() results in a Fatal
>Error.
>
Fuldstændigt korrekt, det er ENESTE forskel.

effekten ved at bruge
require('path');
istedet for:
include('path')

er altså at hvis filen der refereres til ikke kan hentes fyre require en
FATAL error af: og scripte forhindres dermed i at eksekevere.
include sender in warning istedet og FORTSÆTTER eksekeveringen.

Har man eksemplevis et login script på sine beskyttede sider og bruger
include har man sig et problem.

PS: hvis man vil sikre sig at en fil inkulderes én gang på sin side
bruges require_once(); eller include_once();

--
Hans Lund
mailto: halu@daimiNOSPAM.au.dk (fjern NOSPAM)


Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste