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();