Jump to content
Fórum Script Brasil
  • 0

Como salvar um objeto na memória RAM


Frank K Hosaka

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      652k
×
×
  • Create New...