2016-08-09 218 views
-2

Ich habe diese PHP-Klasse js:Kann nicht ein Array von PHP passieren

class Language 
{ 
    public $lang = array 
    (
     'home' => 'index', 
     'login' => 'access' 
    ); 

    function __construct() 
    { 
     return $this->lang; 
    } 
} 

diese Klasse ein Array zurück, das die Sprache für jeden Index enthalten. Jetzt ist diese Klasse in meinem view instanziiert, so einfach in jeder Ansicht kann ich es durch die Eigenschaft this->lang zugreifen.

Aus meiner Sicht Ich habe eine JS-Datei, in das ich versuche, die $lang Array zu gehen, dass dies zu tun ich diesen Code haben:

var Language = <?php echo json_encode($this->lang); ?>; 

das Problem ist, dass zurückgegeben wird, ein Gegenstand der Language Klasse:

Object {lang: Object} 

ich bin für ein assoziatives Array anstelle des Objekts suchen, so dass ich tun kann: Language['home'] und die Zeichenfolge nehmen, statt Language.lang.home. Irgendeine Chance? Vielen Dank.

+0

Sie können nicht Rufen Sie '$ this' außerhalb seiner Klasse auf. Verwenden Sie stattdessen Variable, um diese Daten zu erhalten, und verwenden Sie diese Variable. – Saurabh

+0

Konstruktor gibt nichts zurück (sondern eine Instanz der Klasse). Das tun sie. – PeeHaa

+0

@Saurabh Ich verstehe wirklich nichts, was du geschrieben hast. – Sferza

Antwort

0

Erste Klasse ist falsch, es kann keine return-Anweisung in einem Konstruktor sein, Sie so etwas tun sollte:

class Language 
{ 
    public $lang = array 
    (
     'home' => 'index', 
     'login' => 'access' 
    ); 
} 

Dann in Ihrer Vorlage:

$l = new Language(); 
echo 'var Language = ' . json_encode($l->lang); 
0
class Language 
{ 
    public $lang = array 
    (
     'home' => 'index', 
     'login' => 'access' 
    ); 

    function getLanguage() 
    { 
     return $this->lang; 
    } 
} 
$object = new Language(); 
$languageArray = $object->getLanguage(); 

Verwenden Jetzt $languageArray wie

var Language = <?php echo $languageArray; ?>; 

Diese Sie assoziatives Array geben wird.