jovemnerd / rede-social

Other
182 stars 85 forks source link

Método__autoload() #6

Closed WesleyAdao closed 4 years ago

WesleyAdao commented 4 years ago

Como o método __autoload() foi descontinuado, eu não sei como implementar com o método spl_autoload_register() alguém teria uma dica?

WesleyAdao commented 4 years ago

Consegui resolver.

adriannofrannca commented 4 years ago

poderia me explicar como fez para solucionar ?

WesleyAdao commented 4 years ago

O método original com __autoload é:

<?php
function __autoload($classname){
    $file=null;

    if(file_exists((dirname(__FILE__)."/core/$classname/$classname.php")))$file = (dirname(__FILE__)."/core/$classname/$classname.php");
    else 
        if(file_exists((dirname(__FILE__)."/core/$classname/$classname.class.php")))$file = (dirname(__FILE__)."/core/$classname/$classname.class.php");
        else
            if(file_exists((dirname(__FILE__)."/core/$classname/$classname.ini.php")))$file = (dirname(__FILE__)."/core/$classname/$classname.ini.php");

    if(!is_null($file)) 
        return require_once($file);

}

implementando com spl_autoload_register() fica:

<?php
function MyAutoload($classname){
    $file=null;

    if(file_exists((dirname(__FILE__)."/core/$classname/$classname.php")))$file = (dirname(__FILE__)."/core/$classname/$classname.php");
    else 
        if(file_exists((dirname(__FILE__)."/core/$classname/$classname.class.php")))$file = (dirname(__FILE__)."/core/$classname/$classname.class.php");
        else
            if(file_exists((dirname(__FILE__)."/core/$classname/$classname.ini.php")))$file = (dirname(__FILE__)."/core/$classname/$classname.ini.php");

    if(!is_null($file)) 
        return require_once($file);

}

spl_autoload_extensions('.class.php');
spl_autoload_register('MyAutoload');

Vão existir erros de unset() que serão fáceis de resolver. Espero ter ajudado.