2016-07-18 16 views
0

Ich hatte ein Problem bei der Verwendung einer statischen Klasseneigenschaft im CodeIgniter-Framework.
Ich benutze die aktuelle 'Welcome_message' Ansicht für Debugging-Zwecke nur mit einem Array als Eingabe der Klasse.
Ich möchte eine private statische Eigenschaft namens "Daten" verwenden, die von verschiedenen Klassenfunktionen (in einem Controller) verwendet werden. mein Code unten
Siehe:
Codeigner-Problem bei Verwendung der statischen Eigenschaft in einer Klasse

<?php class Test_dev extends CI_Controller 
{ 
    private static $data=''; 

    public function change() 
    { 
    self::$data= array('test1'=>'data1','test2'=>'data2'); 
    $this->load->view('welcome_message',array('output'=>self::$data)); 
    } 

    public function check() 
    { 
    $this->load->view('welcome_message',array('output'=>self::$data)); 
    } 
} 
?> 


Wenn in meinem Controller, um die Methode 'Veränderung' Aufruf /test_dev/Wechsel ich das gute Verhalten haben, die statische $ data Eigenschaft wird und abrufbar.
I erhalten:

array (2) {[ "Test1"] => string (5) "data1" [ "Test2"] => string (5) "data2" }

Aber, wenn das Verfahren 'überprüfen' verwenden, /test_dev/Check, bekomme ich nur den initialisierten Wert von $ data.

string (0) ""

Ich war expacting auch das erste Ergebnis zu erhalten, indem die 'überprüfen' Methode. Ich weiß nicht, was in meinem Code falsch ist, um die statische Eigenschaft in verschiedenen Methoden abzurufen.
Vielen Dank für Ihre Unterstützung!
Erwann

+0

Hallo Räucherei, sorry kann ich vermisse einige Punkte: bei der Verwendung zunächst die ‚Änderung‘ Funktion, die ich, dass $ angenommen Daten werden durch den Code ‚self :: $ Daten geändert werden = array ('test1' => 'daten1', 'test2' => 'daten2'); ' und rufen Sie diese Werte ab, wenn Sie die Funktion 'check' verwenden. Aber die 'check' Funktion gibt den initialisierten Wert von $ data und nicht den in der 'change' Funktion angegebenen aus, wie ich es erwartet hatte! – ertop

Antwort

0

Schließlich finde ich die Lösung unter Verwendung von Cookie-Helper in CodeIgniter die Variable $ Daten zu übergeben und abzurufen.
meinen letzten Code Siehe:

<?php 
class Test_dev extends CI_Controller 
{ 
private static $data=''; 

public function __construct() 
{ 
    parent::__construct(); 
    $this->load->helper('cookie'); 
} 

public function change() 
{ 
    self::$data= array('test1'=>'data1','test2'=>'data2'); 
    set_cookie('test',serialize(self::$data),time()+3600); 
    $this->load->view('welcome_message',array('output'=>self::$data)); 
} 

public function check() 
{ 
    $test = unserialize($_COOKIE['test']); 
    $this->load->view('welcome_message',array('output'=>$test)); 
} 
} 
?> 
0

Sie müssen aufmerksam sein, welche Art von Daten Sie in Aussicht stellen. In überprüfen Sie die Funktion Sie setzen den gleichen leeren Wert für self :: $ data, die Sie in private statische Eigenschaft definiert. Legen Sie einige Daten, wie Sie in Änderungsfunktion hat und dann Prüffunktion kehren Sie einen Wert ...

+0

Nach meinem Kommentar ist die Session Data eine Möglichkeit, einen Wert in einer Variablen zu speichern und ihn in verschiedenen Funktionen im selben Controller wiederzuverwenden? Ertop – ertop

+0

@ertop ** 1) ** Wenn Sie ** self :: $ data ** für beide Funktionen initialisieren möchten, können Sie die ** __ construct() ** Methode verwenden und hier Ihr Array mit test eintragen. ** 2) ** Ja, Sie können ** Sitzungsdaten ** verwenden – smokehill

Verwandte Themen