⊗ppOpNsAu 105 of 107 menu

Luokkien automaattinen lataus OOP:ssa PHP:ssä

Tiedät jo, että jotta voimme käyttää mitä tahansa luokkaa, meidän on ladattava se require-komennolla. Kun projektissa on hyvin paljon luokkia, syntyy paljon latauksia, joita on erittäin hankala kirjoittaa ja vaikea hallita.

Tämän ongelman ratkaisemiseksi PHP:hen lisättiin luokkien automaattilataus. Automaattilataus mahdollistaa PHP:n lataamaan automaattisesti tiedoston luokalla, kun yritetään viitata tähän luokkaan koodissa. Luokat eivät kuitenkaan lataudu itsestään - ne on sijoitettava sivuston kansioihin erityisellä tavalla, noudattaen jotakin sopimusta luokkien tiedostojen ja kansioiden nimistä. Voit käyttää PHP:n sisäänrakennettua sopimusta, tai keksiä oman ja käyttää sitä.

Aloitetaan standardi PHP-sopimuksesta. Tämä sopimus perustuu siihen, että jos meillä on tietty luokkatiedosto, niin polku sivuston kansioihin tähän tiedostoon tulee vastata tiedoston nimitilaa, ja tiedoston nimi tulee vastata siinä olevan luokan nimeä. Samalla kansioiden ja tiedoston nimien tulee olla pienin kirjaimin.

Katsotaan esimerkkiä. Oletetaan, että meillä on seuraava luokka:

<?php namespace Core\Admin; class PageController { } ?>

Sopimuksen mukaan tämän luokan tulee sijaita kansiossa /core/admin/ tiedostossa pagecontroller.php.

Käytetään nyt tiedostossa index.php luokkaamme lataamatta sitä require-komennolla, vaan käyttämällä automaattilatausta. Tätä varten tiedoston alussa, jossa luokkia kutsutaan, tulee kutsua funktio spl_autoload_register. Tehdään näin:

<?php spl_autoload_register(); // otetaan automaattilataus käyttöön $obj = new Core\Admin\PageController; // luodaan olio rauhassa ?>

Tiedostossa index.php ota käyttöön automaattinen luokkien lataus. Noudata sopimusta kansioiden ja tiedostojen nimistä ja tee luokka Core\User, luokka Core\Admin\Controller ja luokka Project\User\Data. Tiedostossa index.php luo näiden luokkien oliot.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää