【问题标题】:How to get arrays from another php class如何从另一个 php 类中获取数组
【发布时间】:2017-02-23 04:29:42
【问题描述】:

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

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


    ...
?>

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

【问题讨论】:

  • 有一个你想学习的类的例子吗?
  • 你在使用任何框架吗?
  • 我正在使用 yii 1 框架
  • 我强烈建议不要仅仅为了最佳实践而使用全局变量。如果你愿意,我可以用普通的 PHP 给你写一个答案。在我可以给出的情况下,我不确定 yii 是否与基础有任何不同。你愿意吗?
  • 如果你能帮助我,我会很高兴的

标签: php arrays yii yii1.x


【解决方案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,但这可能不是最理想的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2014-03-03
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多