我的班级中有以下代码lang.php
:
<?php $GLOBALS['app_list_strings']['country']=array (
.....
)
...
?>
这些数组未在任何函数和类中定义。
我需要在其他控制器类中获取这些数组值。 (例如,AdminController.php
)。如何访问这些数组值?($GLOBALS['app_list_strings']['country']
)
答案 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
,但这可能不是最理想的解决方案。