Ir para conteúdo
Fórum Script Brasil
  • 0

Como salvar um objeto na memória RAM


Frank K Hosaka

Pergunta

Em 2020 eu criei a tabela tbsupervariavel para poder salvar alguns valores no meio do caminho para utilizar lá na frente.

Aqui em 2023 estou batendo a cabeça na parede para estudar o MVC, mais conhecido como "programação orientada a objetos", mas não vejo como eliminar a tbsupervariavel.

Sente o meu drama:

<?php
session_start();
class Classe {
    private $variavel;
    public function get() {return $this->variavel;}
    public function set($valor) {$this->variavel = $valor;}}
if(!isset($_SESSION['objeto'])){
    $_SESSION['objeto'] = new Classe();}
if (isset($_GET['valor'])) {$_SESSION['objeto']->set($_GET['valor']);}
if (isset($_GET['obter'])) {echo $_SESSION['objeto']->get();} ?>
    <form action="" method="get"> 
        <input name="valor" onchange="this.form.submit()">
    </form>
    <form action="" method="get"> 
        <input type="submit" name="obter" value="Obter">
    </form>

Alguém sabe como fazer esse código funcionar sem usar a gambiarra da $_SESSION?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Tudo funciona quando as classes estão agrupadas no Index.php, mas na hora de separar por pastas e na hora de trabalhar com um serviço de banco de dados dentro de uma classe que foi guardado dentro da variável global $_SESSION, a mensagem que eu recebo é esse:

Fatal error: Uncaught Error: The script tried to call a method on an incomplete object. Please ensure that the class definition "Classe" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide an autoloader to load the class definition in C:\wamp64\www\Astudy\Controles\Classe.php on line 10

arquivo Controles > bd.php
<?php
class bd {
    public function dados () {
        $pdo=new PDO("mysql:host=localhost;dbname=diario","root","");
        $stmt=$pdo->query("select * from tbprod limit 2");
        return $stmt->fetchAll(PDO::FETCH_OBJ);}}

arquivo Controles > Classe.php
<?php
require __DIR__ . '/Subclasse.php';
class Classe extends SubClasse {
    private $variavel;
    public function get() {return $this->variavel;}
    public function set($valor) {$this->variavel = $valor;}}
if(!isset($_SESSION['objeto'])){$_SESSION['objeto'] = new Classe();}
if (isset($_GET['valor'])) {$_SESSION['objeto']->set($_GET['valor']);}
if (isset($_GET['obter'])) {echo $_SESSION['objeto']->get();} 
if (isset($_GET['bd'])){var_dump($_SESSION['objeto']->bd());}?>
    <form><input name=valor onchange=submit()></form>
    <form><input type=submit name=obter value=Obter></form>
    <form><input type=submit name=bd value=bd></form>

arquivo Controles > Subclasse.php
<?php
require __DIR__ .'/bd.php';
class Subclasse {
    public function bd(){
        $conexao=new bd();
        return $conexao->dados();}}

arquivo Index.php
<?php
session_start();
require __DIR__ . '/Controles/Classe.php';
$_SESSION['Diario']=new Classe();

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...