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

时间:2016-10-23 20:52:10

标签: php oop constructor php-include

我有一个我想要使用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;

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

两个问题:

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

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

好的3个问题......

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

希望有人能在这里给我最佳实践。谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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