Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

srnalim

Problema com Autoload simples

Recommended Posts

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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';
Em 01/06/2015 at 14:24, srnalim disse:

Localmente funciona normal somente quando upo pra hostgator que da isso...

Filepath do windows é tratado diferentemente que do linux, isso deve ser levado em consideração na hora de criar uma classe de autoload.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.