|
| 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)
| |
|
|