Boa tarde galera, preciso de uma ajudinha rápida, tenho buscado na net mas só acho coisas com frameworks, tenho esse autoload simples...
function __autoload($class){
require_once($class.'.php');
}
try{
} catch (Exception $ex) {
echo $ex->getMessage();
}
E tenho o seguinte caminho
src/php/bd
Dentro desta pasta bd tenho os arquivos e um namespace neles.
namespace src\php\bd;
class dbConn ...
Mas quando faço a chamada
require_once('src/php/autoload.php');
$pdo = new src\php\bd\dbConn();
recebo isso:
Warning: require_once(src\php\bd\dbConn.php): failed to open stream: No such file or directory in ../src/php/autoload.php on line 4
Localmente funciona normal somente quando upo pra hostgator que da isso...
Como você diz que procurou e só encontra autoloads com frameworks, eu sugiro a utilização do autoload da PSR-4. Você pode instalar através do composer que é bem fácil.
composer.json:
{
"autoload": {
"psr-4": {
/** aqui você defini os namespaces **/
}
}
}
Se você possuir alguma namespace em específico, pode adicionar ele dessa forma (como exemplo abaixo):
{
"autoload": {
"psr-4": {
"Meu\\Namespace\\" : "caminho/para/Meu/Namespace"
}
}
}
Todos os namespaces definidos devem terminar com "\\". Caso você queria definir um "global", que pegue conforme o nome das pastas, deve definí-lo em branco, como mostrado abaixo:
{
"autoload": {
"psr-4": {
"": "",
"Meu\\Namespace\\" : "caminho/para/Meu/Namespace",
"Application\\" : "Application"
}
}
}
Como mostrado no exemplo acima, você pode definir quantos paths/namespaces quiser.
Você só precisa utilizar o composer para instalar. E incluir apenas um arquivo no seu arquivo PHP:
require_once __DIR__.'/vendor/autoload.php';
Filepath do windows é tratado diferentemente que do linux, isso deve ser levado em consideração na hora de criar uma classe de autoload.