Best practice: načítání tříd a autoloading

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Grudl
Nette Core | 8228
+
0
-

PHP parsuje skripty při každém požadavku na server a to zabere to určitý čas. Proto patří k nejlepším postupům načítat pouze ty třídy, které nezbytně potřebuji. Tento úkol nic nezvádne lépe, než autoloading, tedy načítání tříd až v okamžiku použití.

Na druhou stranu, samotný autoloading má určitou režii. Také může komplikovat život ladícím nástrojům a vývojářským IDE.

Best practice:

  • používejte autoloading
  • při deklaraci třídy načtěte předky manuálně

Příklad:

Zde použiji autoloading:

$collection = new Collection;
$collection->add(...);

Zde použiji manuální načtení, protože je nezbytné:

require_once dirname(__FILE__) . '/../Object.php';

require_once dirname(__FILE__) . '/../Collections/ICollection.php';

class Collection extends Object implements ICollection
{
}

Zde není potřeba načíst třídu, nevyvolá se ani autoloading:

if ($obj instanceof Collection) ...