Utisci korisnika

"Želim da kazem da iako sam tek na pola, da sam oduševljena ovim načinom na koji stvari funkcionisu!" Stanislava Kraguljac, Beograd

Da li zato što je DLS novina kod nas (bar za mene)ili još više što će mi koristiti, tek, nalazim da je Arhitektura, izgradnja i održavanje PC računara prava stvar i svakom…


Kompletna lista utisaka

Testiranje online

Arhitektura računara

Za one koji žele da znaju više.

Windows OS

Ovo bi svakako trebalo da probate.

Odnosi s javnošću

Koliko znate PR?

Pogledajte još neke od testova

Newsletter

Ukoliko želite da Vas redovno obaveštavamo o novostima sa Link eLearning sajta prijavite se na našu newsletter listu.

Ime:

Prezime:

Email:


Anketa

Arhiva anketa

BAZA ZNANJA


Kurs: - Core PHP Programming

Modul: Funkcije

Autor: Vladimir Marić

Naziv jedinice: Uključenje postojećeg koda


Materijali vezani uz ovu lekciju:

- Test uključenje postojećeg koda
- Uključenje postojećeg koda (PDF dokument)



Korišćenje već napisanog koda je veoma korisna i česta opcija prilikom programiranja. Na primer, ukoliko web sajt sadrži meni koji se ponavlja na svakoj strani, tada je mnogo jednostavnije napisati kod jedanput, a zatim ga dinamički uključiti na strane na kojima treba da se pojavi, nego pisati kod u okviru svake strane. Ovo je moguće uključivanjem fajlova od strane servera.

Fajlovi koji se uključuju, obično sadrže XHTML ili PHP kod i snimaju se sa ekstenzijom .inc, iako mogu biti snimljeni i sa drugim ekstenzijama. Sadržaj ovakvih fajlova se kodira jedanput, a zatim poziva od strane strana na kojima je potreban. Ukoliko dođe do izmene na originalnom fajlu, one su vidljive na svim stranama na kojima se koristi.

Na primer, dešava se da sve strane jednog web sajta, na svom vrhu, treba da imaju isto zaglavlje. Neka je HTML kod zaglavlja:

<div style="border:ridge 1px;width:95%;background-color:#F0F0F0;padding:5px">
<h3>Dobro dosli na web sajt nase organizacije!</h3>
</div>


Ovaj kod je moguće snimiti unutar fajla nazvanog Header.inc. Nakon kreiranja fajla zaglavlja, neophodno je da se on uključi na svaku stranu na kojoj treba da se prikaže. To se postiže pomoću naredbi za uključivanje eksternih fajlova.

<?php
require('header.inc');
echo "<p>Neki tekst.....</p>";
?>


Ukoliko fajlovi koji se uključuju, sadrže neke poverljive informacije, tada bi trebalo da budu snimljeni sa ekstenzijom .php, kako korisnici ne bi mogli da vide njihov originalan sadržaj, već samo HTML kod, koji je rezultat izvršavanja njihovog koda.

Kao što vidite, fajl koji se importuje nije jezički ograničen (u primeru, to je html fajl), a može biti i bilo koji drugi jezik (sve dok sintaksa ostaje ispoštovana).

Funkcija require nije jedina funkcija koja može da uključi eksterni fajl u aktuelni PHP skript. Zapravo, postoji četiri funkcije koje ovo mogu da urade i svaka ima svoje osobenosti.


Require

Funkcija require() poziva fajl header.inc i čita njegov sadržaj. Ovaj sadržaj se onda prikazuje kao deo strane sa koje je pozvan. Na primer, ako imamo jedan PHP fajl, sa sledećim sadržajem i taj fajl nazovemo mojFajl.php :

<?php
  echo "Pozdrav!";
?>

A zatim, napravimo još jedan fajl, sledećeg sadržaja:

<?php
require "mojFajl.php";
?>

 

Ukoliko startujemo ovaj fajl, on će prikazati na strani poruku: Pozdrav!, jer je u sebe implementirao sadržaj drugog fajla.

Prilikom implementacije fajla na ovaj način, pazite: ne implementira se njegov izlazni sadržaj, već njegov izvorni sadržaj.

To znači sledeće:

Fajl mojFajl.php iz primera, ako se startuje zasebno, emituje poruku Pozdrav!. To je sve što će biti izlaz tog fajla, jer je to ono što PHP interpreter emituje. Ali, ukoliko taj fajl implementiramo u drugi PHP fajl kroz funkcije za implementaciju, u njega ulazi njegov izvorni PHP kod a to je echo „pozdrav”;.

Kada bi, na primer, stavili u sadržaj fajla mojFajl.php sledeći kod:

<?php
$a=”moja promenljiva”;
?>

i emitovali taj fajl direktno u pretraživač. Strana bi bila prazna.
Ali, ako isti fajl uvrstimo u postojeći PHP kod i zatražimo promenljivu $a, ona će dati regularan rezultat.

<?php
require "mojFajl.php";
echo $a;
?>


To znači da mi fajl moramo dobaviti pre nego što ga interpreter emituje na server, odnosno, sa samog fajl sistema. Zato, na primer, sledeći kod ne bi funkcionisao:

<?php
require "http://localhost/mojFajl.php";
echo $a;
?>


PHP bi jednostavno prijavio grešku.


Include

Ukoliko sadžaj strane zavisi od sadržaja fajla koji importujete (na primer, u njemu su neke ključne promenljive), onda možete koristiti funkciju require, jer će ona, ukoliko fajl iz bilo kog razloga ne bude uvršćen u postojeći kod, prekinuti izvršavanje programa.

Ali, ako Vam sadržaj nije od bitne važnosti (na primer, fajl koji uvršćujete je neki čitač vesti, koji prikazuje neke vesti na nekom manje bitnom delu strane), možete iskoristiti i funkciju include. Njena sintaksa je ista kao i require, samo što će, ukoliko učitavanje ne uspe, nastaviti izvršavanje skripte.
Najbolje je da funkciju include „zamaskirate” error suppressor operatorom, tako da problem pri učitavanju ne poremeti definiciju izgleda strane:

@include "mojFajl.php";  


Include_once i require_once()

Zamislite sledeću situaciju:

require("mojFajl.php");
echo $a;
$a="neka druga vrednost:";
require("mojFajl.php");
echo $a;


Ako koristimo malopređašnji sadržaj sadržaja mojFajl.php, onda će ovaj program dva puta emitovati tekst “moja promenljiva”, što najverovatnije nije efekat koji bismo želeli, jer smo u toku koda izmenili vrednost promenljive.

Da se ovo ne bi događalo, koristimo naredbu include_once i funkciju require_once.
Kada PHP dođe dođe do require_once ili include_once funkcije, proveriće da li već postoji implementacija istoimenog fajla, i ukoliko postoji, neće izvršiti ponovno uključivanje.

Imajte na umu da, za razliku od include naredbi, require ne vraćaju nikakav rezultat, obzirom da momentalno prekidaju izvršavanje programa. To znači da sledeća izjava neće funkcionisati:

require("nepostojeciFajl.php") or die("nema fajla");


Ako želite da postignete ovako nešto, onda je možda najbolje da upotrebite drugačiji mehanizam:

if(!@include_once "nepostojeciFajl.php")
    echo "nema fajla";


Ili, možete proveriti postojanje fajla, a zatim u odnosu na tu proveru, izvršiti narednu akciju:

$fajl="nepostojeciFajl.php";
if(file_exists($fajl))
require_once ($fajl);
else
echo "fajl ne postoji";

 

Vežba 1

Problem:

U aplikaciju ulaze sledeće dve promenljive:

$file = "test";
$validExtension = "php";


Potrebno je napisati takav kod koji na osnovu naziva fajla i dozvoljene ekstenzije učitava određeni fajl naredbom include.


Rešenje:

<?php
$file = "test";
$validExtension = "php";
switch($validExtension)
    {
        case "php":
            include $file . ".php";
            break;
        case "html":
            include $file . ".html";
            break;
        case "js":
            include $file . ".js";
            break;
    }
?>


Najvažnije iz lekcije:

  1. U PHP-u možete uključiti kod iz eksternih fajlova u aktuelni kod
  2. Naredbe i funkcije za importovanje eksternih fajlova su include, require, include_once i require_once
  3. Ako izvršenje programa zavisi od eksternog koda, koristite require ili require_once
  4. Ako izvršenje koda nije zavisno od eksternog koda, koristite include ili include_once
  5. require i require_once bezuslovno prekidaju izvršenje programa ako fajl ne postoji
  6. include i include_once nastavljaju izvršenje programa ako fajl ne postoji

Smatrate da je ova lekcija korisna?  Preporučite je. Broj preporuka:6


Molimo Vas unesite svoje podatke i dobićete pristup besplatnim lekcijama.

Ime: 
Prezime: 
Email: