Executando verificação de segurança...
1

PHP não tem autoload por padrão

A diferença é que o PHP não carrega os arquivos das classes automaticamente por padrao.

Isso significa que ao fazer

use Foo\Bar\Classe;

new Classe();

O PHP não entende aonde vai encontrar aquele arquivo.

Autoload e PSR-4

Porém, existe um recuros "magico" chamado autoload (https://www.php.net/manual/pt_BR/language.oop5.autoload.php) aonde você pode definir uma função que será responsável por carregar o arquivo que contém as classes.

E ai é que entra o PSR-4, um padrao de autoloading amplamente utilizado, inclusive pelo Laravel, e implementado pelo composer por exemplo.

Nele, o namespace segue o mesmo caminho da pasta do arquivo:

namespace VendorName\PackageName\Foo\Bar;

class Classe {
}

por exemplo, quando usando o autoloader do composer, irá apontar para o arquivo:

vendor\VendorName\PackageName\Foo\Bar\Classe.php

aonde o primeiro vendor é algo específico do composer e não do PSR-4, pois é o diretório aonde o composer coloca os pacotes, para não misturar com o seu código.

Usando o autoloader padrão do composer, o código fica assim:

// obrigatoriamente você precisa carregar o autoloader do composer
// pois ele quem irá declarar a função de autoloader no PHP
require __DIR__ . '/vendor/autoload.php';

use VendorName\PackageName\Classe;

// por trás dos panos, o autoloader do composer irá executar um `require __DIR__ . '/vendor/VendorName/PackageName/Classe.php'
// e magicamente o codigo abaixo vai funcionar mesmo sem você ter requerido o arquivo manualmente 

new Classe();