我有一个我想要使用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密钥保存在此目录中的单独文件中,或者只是将它们嵌入到我的类中?
希望有人能在这里给我最佳实践。谢谢!
答案 0 :(得分:1)
构造函数不会自动从file-with-api-keys.php
读取变量。在实例化类时,您必须像这样指定它们:$result = new MyClass($id, $key);
最佳做法是将所有PHP脚本存储在除index.php
(也称为前端控制器)之外的webroot目录之外。
是的,你应该打扰:)所有配置,API密钥等应该存储在类代码之外的单独文件中。你不应该把这两件事混在一起。如果你打算使用像Git这样的版本控制系统,那么你将提交你的类代码而不需要任何配置细节。后者将在您的.gitignore
文件中。如果您曾经在一个程序员团队中工作,那么他们每个人都将拥有他独立的配置文件。