Dificuldades com __autoload de classes [RESOLVIDO]

1. Dificuldades com __autoload de classes [RESOLVIDO]

Thiago Thomaz
thiagorthomaz

(usa Ubuntu)

Enviado em 31/01/2012 - 15:25h

Boa tarde,

Pessoal to aprendendo PHP OO, e me deparei com uma dificuldade no autoload das classes.
O script abaixo deveria exibir <h2>HOME PAGE</h2> na primeira vez que acesso, e mostrar um link para ir para a tela de Cadastro.

Agradeço se puderem me apontar o erro, pois estou quebrando a cabeça e o php exibe o arquivo em branco. OBS: Estou tentando fazer 100% orientado a objeto e sem repetição de códigos. Agradeço as dicas e observações.

index.php

<?php

ini_set("display_errors", true);
error_reporting(E_ALL);

/**
* Função detinada a autocarregamento das classes.
* @param string $nomeClasse
*/

function __autoload($nomeClasse) {
$nome_arquivo = $nomeClasse.'.class.php';
$pastas = array(
"controller/",
"model/",
"view/"
);

$encontrado = false;
$qtd_pastas = count($pastas);
$posicao = 0;

while (!$encontrado && $posicao < $qtd_pastas) {
if (file_exists($pastas[$posicao] . $nome_arquivo)) {
require_once $pastas[$posicao] . $nome_arquivo;
break;
}
$posicao++;
}
}


/**
* Acessa as páginas
*/

function telas(){
if (!isset($_REQUEST['acao'])) {
$pagina = "homePage";
} else {
$pagina = $_REQUEST['acao'];
}

$tela = new Tela;

if ($pagina == "homePage") {
$tela->homePage();
}

if ($pagina == "desenhaTelaCadastro") {
$tela->desenhaTelaCadastro();
}
}
?>


Tela.class.php

<?php

class Tela{

private function cabecalho($titulo){
echo "<!DOCTYPE html>";
echo "<html>";
echo "<head>";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";
echo "<title>".$titulo."</title>";
echo "</head>";
echo "<body>";
}

private function rodape(){
echo "</body>";
echo "</html>";
}

public function homePage(){
$this->cabecalho("Home Page");
echo "<h2>HOME PAGE</h2>";
echo "<a href=\"?=acao=desenhaTelaCadastro\">Cadastro</a>";
$this->rodape();
}

public function desenhaTelaCadastro(){
$this->cabecalho("Cadastro Usuario");
echo "<h2>Cadastra Usuario<\h2><br><br>";
echo "<form name=\"Cadastra usuario\" method=\"post\" action=\"../index.php?acao=UsuarioRN.cadastraUsuario\">";
echo "Nome: <input type=\"text\" name=\"nome\" id=\"nome\" size=\"50\"><br>";
echo "Email: <input type=\"text\" name=\"email\" id=\"email\" size=\"50\"><br>";
echo "Login: <input type=\"text\" name=\"login\" id=\"login\" size=\"50\"><br>";
echo "Senha: <input type=\"password\" name=\"senha\" id=\"password\" size=\"50\"><br>";
echo "<input type=\"submit\" value=\"Cadastrar\">";
echo "</form>";
$this->rodape();
}
}
?>


  


2. Re: Dificuldades com __autoload de classes [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 01/02/2012 - 01:49h

uso uma function autoload assim:


function __autoload($classe)
{
$pastas = array('testes', 'pdf', 'html', '../reports');
foreach ($pastas as $pasta)
{
# carrega classes em outros diretórios
if (file_exists("{$pasta}/{$classe}.class.php"))
{
include_once "{$pasta}/{$classe}.class.php";
}

# carrega classes no diretório corrente
if (file_exists("{$classe}.class.php"))
{
include_once "{$classe}.class.php";
}
}
}



Veja se dessa forma funciona sem problemas pra você.


3. Re: Dificuldades com __autoload de classes [RESOLVIDO]

Thiago Thomaz
thiagorthomaz

(usa Ubuntu)

Enviado em 01/02/2012 - 12:43h

Opa descobri meu erro. eu fiz uma function no index e não tinha nada chamando ela, ai tirei a function telas e foi.


O index.php ficou assim:

<?php

ini_set("display_errors", true);
error_reporting(E_ALL);

/**
* Função detinada a autocarregamento das classes.
* @param string $nomeClasse
*/

function __autoload($nomeClasse) {
$nome_arquivo = $nomeClasse.'.class.php';
$pastas = array(
"controller/",
"model/",
"view/"
);

$encontrado = false;
$qtd_pastas = count($pastas);
$posicao = 0;

while (!$encontrado && $posicao < $qtd_pastas) {
if (file_exists($pastas[$posicao] . $nome_arquivo)) {
require_once $pastas[$posicao] . $nome_arquivo;
break;
}
$posicao++;
}
}


/**
* Acessa as páginas
*/


if (!isset($_REQUEST['acao'])) {
$pagina = "homePage";
} else {
$pagina = $_REQUEST['acao'];
}

$tela = new Tela;

if ($pagina == "homePage") {
$tela->homePage();
}

if ($pagina == "desenhaTelaCadastro") {
$tela->desenhaTelaCadastro();
}

?>







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts