繁体   English   中英

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;

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

两个问题:

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

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

好3个问题...

3)我是否应该将api密钥保存在此目录中的单独文件中还是将它们嵌入到我的班级中?

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

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

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

  3. 是的,您应该麻烦:)所有配置,API密钥等都应存储在类代码之外的单独文件中。 您不应将这两件事混在一起。 如果要使用某些版本控制系统(如Git),则将提交没有任何配置详细信息的类代码。 后者将在您的.gitignore文件中。 如果您曾经在一组程序员中工作,那么每个人都将拥有自己的独立配置文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM