PHP Academy · Oppitunti

Tiedostojen sisällyttäminen ja vaatiminen

Jakakaa sivut uudelleenkäytettäviin osiin include- ja require-lauseilla.

Oppitunti 3/413 vaihetta

Tiedostojen sisällyttäminen ja vaatiminen on ilmainen PHP Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu PHP Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. PHP Academy-kurssilla on yhteensä 4 oppituntia.

Koodin uudelleenkäyttö tiedostoja sisällyttämällä

PHP tarjoaa neljä lausetta koodin sisällyttämiseen muista tiedostoista:

  • include – sisällyttää tiedoston ja antaa varoituksen, jos tiedostoa ei löydy
  • require – sisällyttää tiedoston ja aiheuttaa vakavan virheen, jos tiedostoa ei löydy
  • include_once – sisällyttää tiedoston vain, jos sitä ei ole jo sisällytetty
  • require_once – vaatii tiedoston vain, jos sitä ei ole jo sisällytetty

include ja require

Keskeinen ero: puuttuva require-tiedosto aiheuttaa vakavan virheen, kun taas puuttuva include-tiedosto aiheuttaa vain varoituksen:

<?php
// Fatal error if missing — use for critical files
require 'config.php';
require 'database.php';

// Warning if missing, but execution continues
include 'optional_plugin.php';

// Use __DIR__ for reliable relative paths:
require __DIR__ . '/helpers/utils.php';

include_once ja require_once

_once-versiot estävät saman tiedoston sisällyttämisen useita kertoja:

<?php
// Without _once: including twice redefines functions
include 'functions.php';
include 'functions.php';  // Fatal: function redefined!

// With _once: second include is a no-op
require_once 'functions.php';
require_once 'functions.php';  // safe — skipped

// Rule: use require_once for class and function definition files

Muuttujien näkyvyys sisällytetyissä tiedostoissa

Sisällytetyt tiedostot jakavat sisällyttävän tiedoston näkyvyysalueen, mutta eivät funktion näkyvyysaluetta:

<?php
// main.php
$title = 'My Site';
require 'header.php';  // header.php can use $title

// But in a function:
function loadTemplate(): void {
    require 'header.php';  // $title is NOT accessible here!
    // Must pass data explicitly
}

Arvojen palauttaminen sisällytetyistä tiedostoista

Sisällytettävät tiedostot voivat palauttaa arvoja return-lauseen avulla:

<?php
// config.php content:
// return ['debug' => true, 'db_host' => 'localhost'];

// main.php:
$config = require 'config.php';
echo $config['db_host'];  // localhost

// Common pattern for configuration files that return arrays

Yksinkertaisen asettelun rakentaminen

Jaa sivu uudelleenkäytettäviin header-, sisältö- ja footer-tiedostoihin:

<?php
// index.php
$pageTitle = 'Home Page';
$bodyClass = 'home';

require_once 'partials/header.php';
?>

<main class="container">
    <h1>Welcome!</h1>
    <p>Main content goes here.</p>
</main>

<?php require_once 'partials/footer.php'; ?>

Mallipohjien osat

Luo uudelleenkäytettäviä osittaisten näkymien tiedostoja toistuvia komponentteja varten:

<?php
// partials/card.php
// Expects: $card['title'], $card['body'], $card['url']
?>

<div class="card">
    <h3><a href="<?= htmlspecialchars($card['url']) ?>">
        <?= htmlspecialchars($card['title']) ?>
    </a></h3>
    <p><?= htmlspecialchars($card['body']) ?></p>
</div>

Muuttujien välittäminen mallipohjien osiin

Välitä dataa mallipohjan osalle määrittämällä paikallinen muuttuja ennen sisällyttämistä:

<?php
$articles = getArticles();

foreach ($articles as $article) {
    $card = [
        'title' => $article['title'],
        'body'  => substr($article['body'], 0, 100) . '...',
        'url'   => '/articles/' . $article['slug'],
    ];
    require 'partials/card.php';
}

include ja automaattinen lataus

Modernissa PHP:ssä Composerin kanssa luokkatiedostot ladataan automaattisesti – niitä ei tarvitse sisällyttää manuaalisesti:

<?php
// Old way (manual includes):
require 'classes/User.php';
require 'classes/Post.php';

// Modern way (Composer autoloading):
require __DIR__ . '/vendor/autoload.php';

// Classes are loaded automatically when first used
$user = new User();  // User.php loaded by autoloader
$post = new Post();  // Post.php loaded by autoloader

Tietoturva: polkujen läpikäynnin estäminen

Älä koskaan sisällytä tiedostoja vahvistamattoman käyttäjän syötteen perusteella:

<?php
// DANGEROUS:
$page = $_GET['page'];
include $page . '.php';  // allows ../../etc/passwd

// SAFE: whitelist allowed pages
$allowed = ['home', 'about', 'contact'];
$page = $_GET['page'] ?? 'home';

if (!in_array($page, $allowed)) {
    $page = 'home';
}

include __DIR__ . '/pages/' . $page . '.php';

include_path-määritys

Määritä PHP:n include_path, jotta voit sisällyttää tiedostoja ilman täydellisiä polkuja:

<?php
// Current include_path:
echo get_include_path();

// Add your library directory:
set_include_path(
    get_include_path() . PATH_SEPARATOR . '/var/www/lib'
);

// Now you can include without full path:
include 'helpers.php';  // found in /var/www/lib/helpers.php

Pikatarkistus

Mikä ero include- ja require-lauseilla on, kun tiedosto puuttuu?

Kertaus: tiedostojen sisällyttäminen

Yhteenveto:

  • require – aiheuttaa vakavan virheen puuttuessaan; käytä kriittisiin tiedostoihin
  • include – antaa puuttuessaan varoituksen; käytä valinnaisiin tiedostoihin
  • _once-versiot estävät tiedoston lataamisen useita kertoja
  • Sisällytetyt tiedostot jakavat kutsuvan tiedoston muuttujien näkyvyysalueen
  • Tiedostot voivat palauttaa arvoja return-lauseella
  • Älä koskaan sisällytä käyttäjän syötteestä peräisin olevia polkuja – käytä vain sallittujen arvojen luetteloa
Aloita maksutta

Opi PHP tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
49
Oppitunnit
195

Usein kysytyt kysymykset

Onko oppitunti ”Tiedostojen sisällyttäminen ja vaatiminen” ilmainen?

Kyllä – oppitunnin ”Tiedostojen sisällyttäminen ja vaatiminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko PHP Academy-kurssin, päivitä CoddyKit PROhon. PHP Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Tiedostojen sisällyttäminen ja vaatiminen”?

Jakakaa sivut uudelleenkäytettäviin osiin include- ja require-lauseilla. Harjoittelet PHP Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni PHP Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin PHP Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Tiedostojen sisällyttäminen ja vaatiminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä PHP Academy-oppitunnilla?

Kyllä. Jokainen PHP Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. PHP-tunnisteet ja upotussyntaksi
  2. Dynaaminen HTML PHP-silmukoilla
  3. Tiedostojen sisällyttäminen ja vaatiminen
  4. Mallipohjakuviomalli: logiikan erottaminen näkymästä
← Takaisin: PHP Academy