2017-01-09 2 views
0

У меня возникла проблема с доступной системой сообщений сеанса here, где сообщения не отображаются. После долгих проб и ошибок я решил упростить вопрос, который я испытывал вниз к следующему для целей тестирования:Сессионные «флеш-сообщения» не отображаются

<?php 
ini_set('error_reporting', E_ALL); 

define('script_access', true); 

if (!isset($_SESSION)) { 
    session_start(); 
} 

require('../framework/classes/messages.php'); 

$msg = new Messages(); 

class Test { 
    public $foo;  
    public function __construct() { 
     $this->foo = new Messages(); 
    } 
    public function create_form() { 
     if (isset($_POST['submit']) == 'Submit') { 
      $this->form_process(); 
     } 
     echo '<form action="' . $_SERVER['PHP_SELF'] . '?id=1&table=about" method="post">'; 
     echo '<input name="submit" type="submit" id="submit" value="Submit">'; 
     echo '</form>'; 

    } 
    public function form_process() { 
     //$new = new Messages(); 
     $this->foo->add('s', 'new message from'); 
     header("Location: message.php?proc=true"); 
    } 

} 

if ($_GET['proc'] == true) { 
    echo 'should be a message here<br>'; 
    echo $msg->display(); 
    exit; 
} else { 
    $test = new Test(); 
    $test->create_form(); 
} 
?> 

После некоторых бездельничать я добавил теперь закомментирован $new = new Messages(); в подпрограмму и сообщение появляются. Однако, оставив его прокомментированным, они не появляются. Я не уверен, почему я должен переопределить класс, который я уже объявил в конструкторе. Кто-нибудь знает, почему это происходит и как я могу это сделать, чтобы мне было только инициировать класс в конструкторе, а не в подпрограмме?

ответ

0

Хмм хорошо, этот вопрос это, что сообщения класса, инициированные в тестовом классе было только «живые» есть:

<?php 
ini_set('error_reporting', E_ALL); 

define('script_access', true); 

if (!isset($_SESSION)) { 
    session_start(); 
} 

require('../framework/classes/messages.php'); 

$msg = new Messages(); 

class Test { 
    public $foo;  
    public function __construct() { 
     $this->foo = new Messages(); 
    } 
    public function getmessage() { 
     return $this->foo->display(); 
    } 
    public function create_form() { 
     if (isset($_POST['submit']) == 'Submit') { 
      $this->form_process(); 
     } 
     echo '<form action="' . $_SERVER['PHP_SELF'] . '?id=1&table=about" method="post">'; 
     echo '<input name="submit" type="submit" id="submit" value="Submit">'; 
     echo '</form>'; 

    } 
    public function form_process() { 
     $this->foo->add('s', 'new message from'); 
     header("Location: message.php?proc=true"); 
    } 

} 

$test = new Test(); 

if ($_GET['proc'] == true) { 
    echo 'should be a message here<br>'; 
    echo $test->getmessage(); 
    exit; 
} else { 

    $test->create_form(); 
} 
?>