Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal! Estou acompanhando uma série de vídeos no youtube sobre um sistema de login/registro, construído de acordo com conceitos de orientação a objeto. Nesse vídeo ->http://http://www.youtube.com/watch?feature=player_detailpage&v=JQkfAdZbAJE#t=320 , a partir desse momento selecionado, ele escreve o seguinte código:
<?php
spl_autoload_register(function($class) {
require_once 'classes/' . $classes . '.php';
});
?>
Pelo o que eu entendi, toda a vez que uma classe é acessada, o "spl_autoload_register" executa a função descrita, que por sua vez irá requisitar tal classe. Eu li no php.net que o "spl__autoload_register" interpreta tal função, como um "__autoload()". É isso mesmo certo? Outra coisa é, como é passado o argumento para "$class"? Pois, posteriormente, ele simplesmente instancia uma classe e funciona perfeitamente. Não entendi como um valor é passado para a "$class" da função acima.
Obrigado!
Obrigado! Eu entendi que o valor é passado como parâmetro para a função, porém, não entendi como! Pode me explicar?
Obrigado!
Toda vez que você instancia uma classe (objeto), ele "invoca" essa função passando como parâmetro o nome dessa classe daí dentro dela tem as verificações, inclusão etc.
Acredito que seja assim que ela funcione.
O que eu escrevi abaixo é só uma representação do que eu acredito que ele faça mais ou menos:
<?php
$obj = new stdClass;
function( get_class( $obj ) ); //Função passada como parâmetro de spl_autoload_registerExemplo:
function my_autoload_register(Closure $closure) {
$closure('FooBarBaz');
}
my_autoload_register(function ($class) {
echo 'Classe: ' . $class;
});
// Saída - Classe: FooBarBaz
1 - Sim.
2 - O valor é passado como parâmetro para a função anônima.