1

从头开始构建我的第一个 PHP 应用程序。所以请原谅菜鸟问题。

使用 auto_prepend_file 来管理默认数据库连接或运行 session_start() 等公共变量是否合适,或者是否有更有利的方式来定义“应用程序”变量并将会话管理添加到每个页面?

我之所以问,是因为在使用包含中定义的变量时,我在 netbeans 中遇到了警告。搜索谷歌我看到一些帖子指出在包含中定义变量是不好的做法;那么 PHP 的好习惯是什么?

谢谢

4

1 回答 1

2

大多数现代 php 应用程序布局都没有在代码中加载所需的资源。

相反,通常有一个自动加载器来解析请求的资源(类名)并加载正确的文件。然后大多数东西都封装在对象和类中。

现在最常用的标准是PSR-0

配置大多存储在各种格式的配置文件中,例如 xml。然后通常有一个对象用于读取这些配置。然后从该对象获取配置以用于某些地方,例如数据库连接。

此外,那些被执行的东西大多不是在代码中执行,而是通过将自己附加到程序中的某些点来执行。

大多数 php 框架都有一个叫做“钩子”或“事件”的东西。基本上,它只是一个带有事件名称的简单列表,每个条目都有一个应该执行的函数列表。

当代码的某些部分“触发”时,它使用一个帮助类来遍历列表的条目并执行这些条目。

你问自己,你那里不能有循环吗?简单的答案是,是的。

所有这些东西背后的整个想法是,如果您想将新代码带入您的应用程序,则无需在任何地方更改现有代码。

这是好习惯吗?老实说,我不知道。

如果一个项目超过了一定的规模并且有多个人在上面编程,那么一些标准可能是必要的。不修改现有代码的方法在实践中被证明是好的。

关于 auto_prepend_file,这是我不会做的事情。

如果我没有其他办法,我可能会这样做。例如,如果我想执行一些代码来保护我的应用程序免受 ddos​​ 或安全注入。而且我只是不想弄乱应用程序本身。

但如果我从一开始就设计一些东西,我就不会去做。

为什么?也许我想切换到一个新的网络服务器,甚至在命令行中执行我的程序。如果我在apache中定义了我的自动前置,我就会遇到问题......

或者也许我有一些我根本不想要的代码?我的应用程序中只有一个文件我不想要它,因为我不需要它并且它占用资源或存在安全风险?

我经常编写一个应用程序,例如,我在建立链接的函数中直接拥有数据库用户名和密码。

为什么?为什么不?因为我不想让它在全球范围内可用。如果它在函数代码中,则其他可能不安全的代码更难访问它。

最常见的方法是拥有一个配置文件,并且只在应用程序的某个地方需要它。

此外,大多数现代应用程序没有由网络服务器加载的不同 php 文件,因此无需在多个位置使用相同的代码。

相反,大多数现代应用程序都有一个单独的 php 文件(主要是 index.php),用作所谓的“引导程序”文件。网络服务器重写每个请求,而不是对静态资源(如图像)的请求,而其他所有事情,比如在查看请求的 url 时决定显示什么内容,都在应用程序中处理。

于 2013-06-10T17:25:17.280 回答