PHP Autocarga como parte de una solución marco


Ejemplo

// autoload.php
spl_autoload_register(function ($class) {
    require_once "$class.php";
});

// Animal.php
class Animal {
    public function eats($food) {
         echo "Yum, $food!";
    }
}

// Ruminant.php
class Ruminant extends Animal {
    public function eats($food) {
        if ('grass' === $food) {
            parent::eats($food);
        } else {
            echo "Yuck, $food!";
        }
    }
}

// Cow.php
class Cow extends Ruminant {
}

// pasture.php
require 'autoload.php';
$animal = new Cow;
$animal->eats('grass');

Gracias a nuestro cargador automático genérico, tenemos acceso a cualquier clase que siga nuestra convención de nomenclatura del cargador automático. En este ejemplo, nuestra convención es simple: la clase deseada debe tener un archivo en el mismo directorio nombrado para la clase y que termina en ".php". Observe que el nombre de la clase coincide exactamente con el nombre del archivo.

Sin carga automática, tendríamos que require manualmente las clases base. Si construyéramos un zoológico completo de animales, tendríamos miles de declaraciones de requisitos que podrían reemplazarse más fácilmente con un solo cargador automático.

En el análisis final, la carga automática de PHP es un mecanismo que lo ayuda a escribir menos código mecánico para que pueda concentrarse en resolver problemas de negocios. Todo lo que tiene que hacer es definir una estrategia que asigne el nombre de la clase al nombre del archivo . Puede rodar su propia estrategia de carga automática, como se hace aquí. O bien, puede utilizar cualquiera de los estándares que la comunidad de PHP ha adoptado: PSR-0 o PSR-4 . O bien, puede utilizar compositor para definir y administrar genéricamente estas dependencias.