Fájlok betöltése
A PHP include-ok, fájl betöltések leírása, működése
- Főoldal
/
- Kurzusok
/
- Webfejlesztés
/
- PHP
/
- PHP kezdőknek
Fájlok betöltése
Az alkalmazások jól átláthatósága érdekében úgy készítjük el őket, hogy könyvtárakba és fájlokba rendezve strukturálva írjuk a hozzuk tartozó kódokat, tartalmakat.
Például van egy weboldal alkalmazásunk mely rendelkezik 2 oldallal, főoldal és kapcsolat oldal. Hogy ránézésre ne tévedjünk el a forráskódban, és hogy könnyen el tudjuk dönteni melyik rész tartozik a főoldalhoz, és melyik a kapcsolat oldalhoz, 2 külön fájlba tesszük a hozzuk tartozó forráskódot az alábbi formában:
készítünk egy templates könyvtárat, majd létrehozunk benne 2 php állományt: home.php és contact.php. Így tudjuk amikor a főoldalról beszélünk, akkor a "home.php" állományról van szó, ha a kapcsolat oldalról, akkor a "contact.php" állományról.
Bár az összes forráskódot melyre szükségünk van az alkalmazás működéséhez, írhatnánk egyetlen állományba is, de ez kb. 1000-2000 sornyi programozási kód után már nagyon össze fog zavarni, átláthatatlan kezd lenni. Bizonyos esetekben már sokkal hamarább is. Próbáljuk ki nyugodtan, másoljunk össze több forráskódot egyetlen állományba, majd próbáljuk megkeresni benne, hogy hol kezdődik az egyik, hol a másik.
Ennek az átláthatatlanságnak az elkerülése érdekében mentjük több állományba a forráskódot, ehhez pedig elengedhetetlen a fájlok betöltése, mivel az alkalmazásunk futtatásakor a PHP az összes forráskódot melyre szükségünk van össze kell gyúrja, mintha 1 állományban lennének.
Kétféle fájl betöltés létezik, mindkét módszerből két különböző típus.
- Amikor az állomány életbevágó hogy létezzen, nélküle nem működhet az alkalmazásunk
- Amikor az állomány nélkül is képes működni a rendszer
Jelölésük:
- include "teljes fájl neve eléréssel", pl: include "templates/contact.php"
- require "teljes fájl neve eléréssel", pl: require "templates/contact.php"
Az include esetében ha nem létezik a fájl, nem találja meg az alkalmazásunk, attól még az alkalmazás futása nem áll meg, kapunk egy felhívást, hogy vigyázzunk, mert nem találta meg a fájlt, de tovább fog működni. A require esetében, ha a fájlt nem találja meg a rendszer, akkor az alkalmazásunk hiba üzenetet fog mutatni és megáll.
Az alkalmazások elkészítésénél sokszor előfordulhat, hogy bizonyos állományokat több helyen is betöltünk hogy bíztosak legyünk abban, hogy az állomány tartalma be van töltve. Ebben az esetben megtőrténhet, hogy az alkalmazásunk szintén hiba üzenetet fog adni, pl. olyankor ha egy függvény (feladat) ezáltal kétszer fog szerepelni.
Vegyük az alábbi példát: van egy "functions.php" nevű állományunk is, mely tartalmaz egy függvényt, és ezt többször töltjük be.
A functions.php tartalma:
<?php
function test_function()
{
// végrehajtandó feladat
}
?>
Az index.php az alábbi formában néz ki:
<?php
include "libraries/functions.php"
if( ! empty( $_GET["page"] ) && $_GET["page"] == "contact" )
{
include "templates/contact.php";
}
else
{
include "templates/home.php";
}
?>
Az index.php első sorában betöltjük a functions.php állományt a libraries könyvtárból, majd ha a címben meghatároztuk a page változó segítségével, hogy a kapcsolat oldalt mutassa, akkor azt töltjük be, másképp a főoldalt mutatjuk.
A kapcsolat oldalon betöltjük a functions.php állományt mégegyszer az alábbi módon:
<?php
include "libraries/functions.php";
?>
Kapcsolat oldal, üdvözöllek!
Ebben az esetben behelyettesítve az összes PHP részt, a végeredményünk az alkalmazásunk futtatásakor úgy nézne ki, hogy:
<?php
function test_function()
{
// végrehajtandó feladat
}
if( ! empty( $_GET["page"] ) && $_GET["page"] == "contact" )
{
function test_function()
{
// végrehajtandó feladat
}
?>
Kapcsolat oldal, üdvözöllek!
<?php
}
else
{
?>
Főoldal
<?php
}
?>
Ebből is látszik, hogy a "test_function" nevű függvényünk kétszer létezik, és ez hibát fog eredményezni az alkalmazásunk futtatásakor, melytől megáll.
Ennek az elkerülése érdekében mindkét fajta állomány betöltésből létezik még egy-egy másik fajta is, amely megmondja, hogy a fájl ha már be volt töltve, akkor ne töltse be mégegyszer. Jelölése:
- include_once "libraries/functions.php"
- require_once "libraries/functions.php"
Ebben a formában használva az alábbi kód futtatásakor az állomány nem töltődik be, ha már egyszer be volt töltve:
index.php
<?php
include_once "libraries/functions.php"
if( ! empty( $_GET["page"] ) && $_GET["page"] == "contact" )
{
include "templates/contact.php";
}
else
{
include "templates/home.php";
}
?>
contact.php
<?php
include_once "libraries/functions.php";
?>
Kapcsolat oldal, üdvözöllek!
Így az alábbi alkalmazás futtatásakor a végeredmény a következő formában fog kinézni:
<?php
function test_function()
{
// végrehajtandó feladat
}
if( ! empty( $_GET["page"] ) && $_GET["page"] == "contact" )
{
?>
Kapcsolat oldal, üdvözöllek!
<?php
}
else
{
?>
Főoldal
<?php
}
?>
Ez a változat már tökéletesen működik, az alkalmazás nem akad ki, nem kapunk felhívást sem.
A normál include vagy require változatot olyan esetben szokták használni, amikor olyan állományról beszélünk, amely általában valamit kiírat, de mindenképp többször végrehajtható feladatot tartalmaz, például a templates könyvtárból a contact.php állomány, mely kiírja, hogy milyen oldalon vagyunk. többször egymásután betöltve az index.php állományban:
<?php
include_once "libraries/functions.php"
if( ! empty( $_GET["page"] ) && $_GET["page"] == "contact" )
{
include "templates/contact.php";
include "templates/contact.php";
include "templates/contact.php";
}
else
{
include "templates/home.php";
}
?>
A végeredmény ez lesz:
<?php
function test_function()
{
// végrehajtandó feladat
}
if( ! empty( $_GET["page"] ) && $_GET["page"] == "contact" )
{
?>
Kapcsolat oldal, üdvözöllek!
Kapcsolat oldal, üdvözöllek!
Kapcsolat oldal, üdvözöllek!
<?php
}
else
{
?>
Főoldal
<?php
}
?>
- Előző lecke: Ciklusok
- Következő lecke: Függvények
Részletek
- Megtekintve: 552
- Haszontalannak jelölve: 0
- Hasznosnak jelölve: 0
- Értékelés: