如何从另一个php类获取数组

时间:2017-02-23 04:29:43

标签: php arrays yii yii1.x

我的班级中有以下代码lang.php

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


    ...
?>

这些数组未在任何函数和类中定义。 我需要在其他控制器类中获取这些数组值。 (例如,AdminController.php)。如何访问这些数组值?($GLOBALS['app_list_strings']['country']

1 个答案:

答案 0 :(得分: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并指定{ {1}}然后返回self::$array = array(...etc.。因为它是静态的,它将通过脚本持续存在。最后一种方法是保存到self::$array,但这可能不是最理想的解决方案。