php - 如何在不传递数组的情况下使类可以访问数组?

标签 php arrays scope global-variables

我有一个 .ini 文件作为我项目的配置。现在我想让它无处不在。 Here是我正在尝试做的事情的简化:

<?php

$config = [];
$config['base_url'] = '/mypath/';

class myclass{

    public function myfunc(){
        print_r($config);
    }
}

$obj = new myclass;
$obj->myfunc;

正如您在 fiddle 中看到的那样,它会抛出:

Notice: Undefined property: myclass::$myfunc in /in/iNZOv on line 14

请注意,当我为其使用 global 关键字时,它会抛出语法错误


看,我可以像这样将数组传递给类:

$obj = new myclass($config);

public $config;
public function __construct($config)
{
    $this->config = $config;
}

但我不能每次都对所有类(class)都这样做。不管怎样,我想知道,是否可以使数组在全局范围内可访问?

最佳答案

使用全局。您还需要 $obj->myfunc(); 而不是 $obj->myfunc(); 因为它是成员函数

$config = [];
$config['base_url'] = '/mypath/';

class myclass{

    public function myfunc(){
        global $config;
        print_r($config);
    }
}

$obj = new myclass;
$obj->myfunc();

关于php - 如何在不传递数组的情况下使类可以访问数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45253399/

相关文章:

php - PHP中mongodb聚合中的Substr

php - 如何使用 RegEx 排除 [ ] 中的符号

java - 如何将数组添加到 arrayList 而不替换列表中的其他数组

C中的数组可以定义为根据用户的输入进行调整吗?

python - numpy 怎么能比我的 Fortran 例程快得多?

c - Arduino 问题 :"' i' 未在此范围内声明”

JavaScript/AJAX 打印异常

php - 我的基于 php + mysql 的表单需要一些帮助

java - 我可以拦截 Spring @Autowired 进程来进行验证检查吗?

c++ - 不断收到错误 "is not a class or namespace"或 "cannot call member function without object"