2017-02-23 51 views
0

Я следующий код в моем классе под названием lang.php:Как получить массивы из другого класса PHP

<?php $GLOBALS['app_list_strings']['country']=array (
..... 
) 


    ... 
?> 

Этого массив не определен внутри любой функции и класса. Мне нужно получить эти значения массива в другом классе контроллера. (Например, AdminController.php). Как я могу получить доступ к этим значению массива? ($GLOBALS['app_list_strings']['country'])

+0

Получил пример класса, в который вы хотите получить это? – Machavity

+0

Используете ли вы какую-либо фреймворк? –

+0

Я использую yii 1 framework – phpdev

ответ

1

Вы можете просто вводить свой другой класс в свой AdminController класса и создать метод get для извлечения массива (ы) вам нужно. Предположительно вы ваш класс создан как так (очевидно, будет больше скрипт):

class Lang 
    { 
     public function someMethod() 
      { 
       $array = array(
        'app_list_strings'=>array(
         'country'=>array(
          'k1'=>'val1', 
          'k2'=>'v2' 
         ) 
        ) 
       ); 
      } 
    } 

Если добавить частный параметр и метод вы можете извлечь этот массив:

class Lang 
    { 
     # Create parameter 
     private $array; 
     # Whatever method contains the array 
     public function someMethod() 
      { 
       # use $this here 
       $this->array = array(
        'app_list_strings'=>array(
         'country'=>array(
          'k1'=>'val1', 
          'k2'=>'v2' 
         ) 
        ) 
       ); 
       # I am just returning self for sake of demonstration. 
       return $this; 
      } 
     # Returns the array 
     public function getArray() 
      { 
       return $this->array; 
      } 
    } 

class AdminController 
    { 
     # Inject your other class 
     public function whateverMethod(Lang $lang) 
      { 
       # Retrieve array from getArray() method 
       print_r($lang->someMethod()->getArray()); 
      } 
    } 

Для Применение:

<?php 
$AdminController = new AdminController(); 
$AdminController-> whateverMethod(new Lang()); 

Чтобы получить массив только в общем:

<?php 
$Lang = new Lang(); 
print_r($Lang->someMethod()->getArray()); 

Если классы далеки друг от друга, в том, что они вызываются из различных областей вашего сценария, и они не могут быть введены, как показано, вы можете изменить private $array к private static $array и назначить self::$array = array(...etc. затем вернуться self::$array. Поскольку он является статичным, он будет сохраняться через скрипт. Последний способ - сохранить до $_SESSION, но это может быть не самое желательное решение.