Require_once跨不同文件,全局作用域


Require_once across different files, global scope

我学习PHP已经有几天了,我遇到了一个奇怪的问题。我有两个文件:

login.php存储数据库访问数据(user, pw, host, db)
security.php具有操作字符串/查询以防止sql/xss注入的功能,并且还存储用于密码哈希的salt前缀和后缀。

然后是index.php, register.phpsignin.php。我的问题是:当我把require_once '../login.php';register.php我通常可以调用一个变量或函数,如$var。另一方面,在signin.php中完全相同的模式不起作用,PHP告诉变量没有声明。我试着做:global $var,它是工作的,但我有感觉,这是完全不安全的。

解决这个问题的正确方法是什么?
2)是否与应用架构相关?
3)所有使用db连接的函数(和其他)应该写在一个文件中吗?

步骤1 - 创建一个php文件,将所有数据库连接写入该文件(示例- db.php)

当你有一个数据库相关的操作时,包括这个php (db.php) <>之前需要"db.php";//添加你的数据库PHP文件之前


这将很容易组织,并最大限度地减少错误时,你的应用程序从一个服务器迁移到另一个在PHP中有require和include。Require很好,因为如果文件不可用,它将停止执行代码。

这也很容易组织和最小化从一个服务器迁移到另一个服务器时引起的错误

  1. 安装作曲家
  2. 把你所有的代码放到你的命名空间类的函数中(如果你必须的话,作为静态函数)。
  3. 将psr4中指定的类保存在lib dir中。
  4. 创建作曲家。在composer网站上指定的Json文件,并包括你的lib目录作为自动加载,因为它在composer文档中说。
  5. require_once projecroot /vendor/autolload .php

调用类方法(带命名空间)而不是函数。是懒惰。避免require/include地狱。