< PHP OOP

Autoload

Szerző: Sallai András

Copyright © Sallai András, 2022

Licenc: CC Attribution-Share Alike 4.0 International

Web: https://szit.hu

Automatikus betöltés

Ha szeretnénk elkerülni az include, include_once, require, require_once használatát, akkor automatikus betöltőre van szükségünk. Elég, ha a névterekkel megmondjuk mit szeretnénk használni.

Legyen a következő könyvtárszerkezet:

app01/
`-src/
|-Munka/
| `-Dolgozo.php
|-index.php
`-munka.php

A munka.php fájlban szeretném használni a Dolgozo.php-ban található Dolgozo osztályt.

Betöltés

Az index.php fájlban létrehozzuk az automatikus betöltőt:

<?php spl_autoload_register(function ($class) { include __DIR__ ."/". str_replace('\\', '/', $class) . '.php'; }); include_once('munka.php');

A munka.php-ban nincs névtér, ezt betöltjük az include_once() függvénnyel.

A munka.php fájlban már csak a use parancsot használjuk:

<?php use Munka\Dolgozo; $mari = new Dolgozo(); echo $mari->nev;
<?php namespace Munka; class Dolgozo{ public $nev; public function __construct() { $this->nev = 'névtelen'; } }

Több információ

https://www.php.net/manual/en/function.spl-autoload-register.php (2022)

https://www.sitepoint.com/battle-autoloaders-psr-0-vs-psr-4/ (2022)

https://www.php-fig.org/psr/psr-0/ (2022)

https://www.php-fig.org/psr/psr-4/ (2022)