PHP从包含的文件中访问构造函数中的变量


php accessing variables in constructor from included file

我有一个想要使用API的类,并且我已经在另一个目录的单独文件中获得了API密钥。

api密钥文件就像这样简单:

$id = 'xxxxxxx';
$key = 'xxxxxxx';

这行不通:

include '/path/to/file-with-api-keys.php';
class MyApiClass {
    public function __construct($id, $token) {
        $this->client = new Client($id, $token);
    }
}

我实例化类的代码在我用来测试的另一个php文件中,它非常简单,只是包含类然后实例化它:

include '/path/to/MyClass.php';
$result = new MyClass();
$result->myMethod();
echo $result;

我得到的错误基本上是说这两个变量是空的

两个问题:

1)如何访问构造函数中变量的值?我在其他地方读到,在方法中直接使用包含文件是不好的做法,而且使用全局变量也是不好的做法。

2)有些相关的问题,我存储api密钥的这些文件与我的数据库连接详细信息在同一目录中,但目录不在根目录之外。在这个目录中,我有一个带有"拒绝所有"的。htaccess文件。从安全的角度来看,这是否足够,或者我应该做其他事情?

ok 3个问题…

3)我是否应该把api密钥保存在这个目录下的单独文件中,或者只是把它们嵌入到我的类中?

希望有人能给我最好的做法。谢谢!

  1. 构造函数不会自动从file-with-api-keys.php中读取变量。在实例化类时必须这样指定它们:$result = new MyClass($id, $key);

  2. 最好的做法是将所有的PHP脚本存储在webroot目录之外,除了index.php (aka front controller)。

  3. 是的,你应该麻烦:)所有的配置,API密钥等都应该存储在单独的文件中,在你的类代码之外。你不应该把这两件事混在一起。如果您打算使用Git之类的版本控制系统,那么您将在没有任何配置细节的情况下提交类代码。后者将在.gitignore文件中。如果你曾经在一个程序员团队中工作,那么他们每个人都会有自己独立的配置文件。