Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

carcleo

classe não abre

Mensagens Recomendadas

carcleo

Minha estrutura

    localhost/sistema
    localhost/sistema/.htaccess
    localhost/sistema/composer.json
    localhost/sistema/composer.lock
    localhost/sistema/composer.phar
    localhost/sistema/App
    localhost/sistema/App/mvc/
    localhost/sistema/App/mvc/Controles
    localhost/sistema/App/mvc/Controles/Planos.php
    localhost/sistema/App/mvc/Modelos
    localhost/sistema/App/mvc/Modelos/Planos.php
    localhost/sistema/App/mvc/Vistas
    localhost/sistema/App/mvc/Vistas/Conexao.php
    localhost/sistema/App/mvc/Vistas/geral.php
    localhost/sistema/App/mvc/Vistas/Planos.php
    localhost/sistema/vendor
    localhost/sistema/public
    localhost/sistema/public/index.php

Planos.php Controles

    <?php 
    
     namespace CONTROLES;
     
     class Planos {
         
         private $conexao;
         
         public function __construct ($_conexao) {        
             $this->conexao = $_conexao;
         }
         
         public function pesquisaPlano($idPlano) {
             $plano = null;           
             
             $string = "SELECT 
                           idPlano,
                           nome,
                           descricao
                        FROM planos 
                        WHERE idPlano = ".$idPlano;
                                        
             $registros = $this->conexao->query($string);
             $quantasLinhas = $registros->num_rows;         
             
             if ($quantasLinhas > 0) {
                 
                 list ($idPlano, $nome, $descricao) = $registros->fetch_row();
    
                 $plano = new Planos($nome, $descricao);                
                 
                 $plano->setIdPlano($idPlano);
             }
    
             return $plano;
             
         }
    
    
         
         public function pesquisaPlanos($where = NULL) {
    
    
             $planos = null;           
             
             $string = "SELECT idPlano, nome, descricao FROM planos ".$where;
    
             $registros = $this->conexao->query($string);
             $quantasLinhas = $registros->num_rows;         
             
             if ($quantasLinhas > 0) {
                 
                 while (list ($idPlano, $nome, $descricao) = $registros->fetch_row()) {
    
                   $plano = new Planos($nome, $descricao);                        
                   $plano->setIdPlano($idPlano);
      
                   $planos[] = $plano;
    
                 }
             }
    
             return $planos;
         }
         
     }
    ?>

Planos.php Modelos

 

   <?php
      
      namespace MODELOS;
      
      class Planos {
          
          private $idPlano;
          private $nome;
          private $descricao;
          
          public function __construct (
              $_nome, 
              $_descricao) {
                  
              $this->nome = $_nome;
              $this->descricao = $_descricao;
          }      
          
          public function setIdPlano ($_idPlano) {
              $this->idPlano = $_idPlano;
          }
    
          public function getIdPlano () {
              return $this->idPlano;
          }
    
          public function getNome () {
              return $this->nome;
          }
          public function getDescricao() {
              return $this->descricao;
          }
    
         
           public function alteraPlano ($plano) {
               
               $string = "UPDATE planos 
                          SET nome ='".$plano->getNome()."', 
                              descricao = '".$plano->getDescricao()."' 
                          WHERE idPlano = ".$plano->getIdPlano();
                          
               return $this->conexao->query($string);
           }
           
      
           public function excluir ($idPlano) {         
               // CHAVE ESTRANGEIRA E ON DELETE CASCADE ATIVADO NO BANCO
               $string = "DELETE FROM planos WHERE idPlano = ".$idPlano;
               
      /*         
              DA FORMA ABAIXO É SOMENTE QUANDO NÃO CONFIGUROU O DELETE CASCADE NO BANCO
               $string = "DELETE planos, fotos FROM planos
                          LEFT JOIN fotos  ON 
                              planos.idPlano = fotos.idPlano
                          WHERE planos.idPlano = ".$idPlano;
      */                    
               return $this->conexao->query($string);
               
           }
      
           public function cadastrar ($plano) {         
           
               $string = "INSERT INTO planos (                                            
                            nome,
                            descricao
                           ) 
                           VALUES (
                             '".$plano->getNome()."',
                             '".$plano->getDescricao()."'
                             )
                             ";
      
               return $this->conexao->query($string);
               
           }
           
           public function ultimoIdCadastrado () {         
               return $this->conexao->insert_id;
           }      
      }
      
    ?>

Planos.php Vistas

    <?php
    
       namespace VISTAS;
       use CONTROLES;
       use MODELOS;
       
       class Planos {
                  
           
           public  function __construct () {
               print dirname((__FILE__));
             }
           
           public function planos ($_conexao) {

               $planos = new \CONTROLES\Planos($_conexao);
               $todos = $planos->pesquisaPlanos();
               foreach ($todos as $plano) :
                  echo $plano->getNome()."<br />";
               endforeach;

           }
           
        
       }

Geral.php Vistas

    <?php
    
       namespace VISTAS;
       use CONTROLES, MODELOS;
       
       class Geral {
           
           private $classe;
           
           public  function __construct () {
               
               $this->planos();
               
           }
           
           public function planos () {
               $planos = new Planos();
               $todos = $planos->pesquisaPlanos();
               foreach ($todos as $plano) :
                  echo $plano->getNome()."<br />";
               endforeach;
           }
           
           
       }

index.php public

   

 <?php 
    
      ini_set("display_errors",true);
      ini_set("display_startup_erros",1);
      error_reporting(E_ALL && E_NOTICE && E_STRICT);
    
      require_once "../vendor/autoload.php";
      require_once "../App/mvc/Vistas/Conexao.php";
      require_once "../App/mvc/Vistas/Planos.php";
    
      $conecta = new Conexao();
      $conexao = $conecta->abreConexao();
    
      $planos = new Planos();
      $planos->planos($conexao);
    
    ?>


e composer.json

    {    
      "require" : {
            "php" : "^5.5 || ^7.0",
            "ext-mbstring": "*"
        },
      "authors": [
            {
                "name": "Carlcleo",
                "email": "carcleo@oi.com.br",
                "role": "Desenvolvedor"
            }],
       "autoload": {
          "psr-4": {
             "APP\\": "App",
             "MVC\\": "App/mvc",
             "MODELOS\\": "App/mvc/Modelos",
             "VISTAS\\": "App/mvc/Vistas",
             "CONTROLES\\": "App/mvc/Controles"
          }
       }
    }

Quando rodo index.php da erro de servidor.

    Fatal error: Uncaught Error: Class 'Planos' not found in C:\Program Files\Apache24\Apache24\htdocs\mvc\public\index.php:14 Stack trace: #0 {main} thrown in C:\Program Files\Apache24\Apache24\htdocs\mvc\public\index.php on line 14

Onde estou errando?

Pode acompanhar em:

 

http://funerariasaopedro.net.br/mvc

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
carcleo

Ei, estou começando nessa vida agora então ainda meio perdido.

O que eu tenho é o autoload.php do próprio composer.
 

<?php

// autoload.php @generated by Composer

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInite9e18adb730cd6c55b0c6fc4162b48b9::getLoader();

Está errado?

Se sim, como deveria estar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
carcleo

Minha estrutura

    localhost/sistema
    localhost/sistema/.htaccess
    localhost/sistema/composer.json
    localhost/sistema/composer.lock
    localhost/sistema/composer.phar
    localhost/sistema/App
    localhost/sistema/App/mvc/
    localhost/sistema/App/mvc/Controles
    localhost/sistema/App/mvc/Controles/Planos.php
    localhost/sistema/App/mvc/Modelos
    localhost/sistema/App/mvc/Modelos/Planos.php
    localhost/sistema/App/mvc/Vistas
    localhost/sistema/App/mvc/Vistas/Conexao.php
    localhost/sistema/App/mvc/Vistas/Planos.php
    localhost/sistema/vendor
    localhost/sistema/public
    localhost/sistema/public/index.php

Planos.php Controles

    <?php 
    
     namespace CONTROLES;
     use MODELOS\Planos;
     
     class Planos {
         
         private $conexao;
         
         public function __construct ($_conexao) {    
             $this->conexao = $_conexao;
         }
         
         public function alteraPlano ($plano) {
             
             $string = "UPDATE planos 
                        SET nome ='".$plano->getNome()."', 
                            descricao = '".$plano->getDescricao()."' 
                        WHERE idPlano = ".$plano->getIdPlano();
                        
             return $this->conexao->query($string);
         }
         
    
         public function excluir ($idPlano) {         
             // CHAVE ESTRANGEIRA E ON DELETE CASCADE ATIVADO NO BANCO
             $string = "DELETE FROM planos WHERE idPlano = ".$idPlano;
             
    /*         
            DA FORMA ABAIXO É SOMENTE QUANDO NÃO CONFIGUROU O DELETE CASCADE NO BANCO
             $string = "DELETE planos, fotos FROM planos
                        LEFT JOIN fotos  ON 
                            planos.idPlano = fotos.idPlano
                        WHERE planos.idPlano = ".$idPlano;
    */                    
             return $this->conexao->query($string);
             
         }
    
         public function cadastrar ($plano) {         
         
             $string = "INSERT INTO planos (                                            
                          nome,
                          descricao
                         ) 
                         VALUES (
                           '".$plano->getNome()."',
                           '".$plano->getDescricao()."'
                           )
                           ";
    
             return $this->conexao->query($string);
             
         }
         
         public function ultimoIdCadastrado () {         
             return $this->conexao->insert_id;
         }
               
         public function pesquisaPlano($idPlano) {
             
             $plano = null;           
             
             $string = "SELECT 
                           idPlano,
                           nome,
                           descricao
                        FROM planos 
                        WHERE idPlano = ".$idPlano;
                        
             $registros = $this->conexao->query($string);
             $quantasLinhas = $registros->num_rows;         
             
             if ($quantasLinhas > 0) {
                 
                 list ($idPlano, $nome, $descricao) = $registros->fetch_row();
    
                 $plano = new Planos($nome, $descricao);                
                 
                 $plano->setIdPlano($idPlano);
             }
    
             return $plano;
             
         }
    
    
         
         public function pesquisaPlanos($where = NULL) {
    
    
             $planos = null;           
             
             $string = "SELECT idPlano, nome, descricao FROM planos ".$where;
    
             $registros = $this->conexao->query($string);
             $quantasLinhas = $registros->num_rows;         
             
             if ($quantasLinhas > 0) {
                 
                 while (list ($idPlano, $nome, $descricao) = $registros->fetch_row()) {
    
                   $plano = new Planos($nome, $descricao);                        
                   $plano->setIdPlano($idPlano);
      
                   $planos[] = $plano;
    
                 }
             }
    
             return $planos;
         }
         
     }
    ?>

    Planos.php Modelos
    

    <?php
      
      namespace MODELOS;
      
      class Planos {
          
          private $idPlano;
          private $nome;
          private $descricao;
          
          public function __construct (
              $_nome, 
              $_descricao) {
                  
              $this->nome = $_nome;
              $this->descricao = $_descricao;
          }      
          
          public function setIdPlano ($_idPlano) {
              $this->idPlano = $_idPlano;
          }
    
          public function getIdPlano () {
              return $this->idPlano;
          }
    
          public function getNome () {
              return $this->nome;
          }
          public function getDescricao() {
              return $this->descricao;
          }
                
      }
      
    ?>

Planos.php Vistas

    <?php
    
       namespace VISTAS;
       
       use CONTROLES\Planos as PC;
       use MODELOS\Planos as PM;
       
       class Planos {
                  
           private $conexao;
           
           public  function __construct ($_conexao) {
               $this->conexao = $_conexao;
             }
           
           public function getPlanos () {
                          
               $planos = new PC($this->conexao);
    
               $todos = $planos->pesquisaPlanos();
               
               foreach ($todos as $plano) :
                  echo $plano->getNome()."<br />";
               endforeach;
               
           }
           
        
       }

index.php public

    <?php 
         
      ini_set("display_errors",true);
      ini_set("display_startup_erros",1);
      error_reporting(E_ALL && E_NOTICE && E_STRICT);
    
      require_once "../App/mvc/Vistas/Conexao.php";
      require_once "../vendor/autoload.php";
      
      $conecta = new Conexao();  
      $conexao = $conecta->abreConexao();
    
      $planos = new Planos($conexao);   
      print_r($planos->getPlanos());
      
    
    ?>

e composer.json

    {    
      "require" : {
            "php" : "^5.5 || ^7.0",
            "ext-mbstring": "*"
        },
      "authors": [
            {
                "name": "Carlcleo",
                "email": "carcleo@oi.com.br",
                "role": "Desenvolvedor"
            }],
       "autoload": {
          "classmap": ["App"]
       }
    }

Quando rodo index.php da erro de servidor.

Fatal error: Uncaught Error: Class 'CONTROLES\Planos' not found in C:\Program Files\Apache24\Apache24\htdocs\mvc\App\mvc\Vistas\Planos.php:18 Stack trace: #0 C:\Program Files\Apache24\Apache24\htdocs\mvc\public\index.php(16): VISTAS\Planos->getPlanos() #1 {main} thrown in C:\Program Files\Apache24\Apache24\htdocs\mvc\App\mvc\Vistas\Planos.php on line 18

Onde estou errando?

Pode acompanhar em:

http://funerariasaopedro.net.br/mvc

Adicionando autoload_classmap:

<?php

// autoload_classmap.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'CONTROLES\\Planos' => $baseDir . '/App/mvc/Controles/Planos.php',
    'MODELOS\\Planos' => $baseDir . '/App/mvc/Modelos/Planos.php',
    'VISTAS\\Planos' => $baseDir . '/App/mvc/Vistas/Planos.php',
);

 

Editado por carcleo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.