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

php accessing variables in constructor from included file

我有一个 class,我想在其中使用 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);
    }
}

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

include '/path/to/MyClass.php';

$result = new MyClass();
$result->myMethod();

echo $result;

我得到的错误基本上是说 2 个变量为空。

两个问题:

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

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

好的3个问题...

3) 我是否应该费心将 api 密钥保存在此目录中的单独文件中,或者只是将它们嵌入到我的 class 中?

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

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

  2. 最佳做法是将所有 PHP 脚本存储在 webroot 目录之外,index.php(也称为前端控制器)除外。

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