PHP在服务器上打开带有get变量的文件


PHP open file on server with get variables?

好吧,基本上,我已经写好了一个PHP脚本(这是一个MMORPG,所以我们很清楚)。

我希望能够做的是,与其只在一个大脚本中编写包含完全相同数据的新(大量)文件(以便能够为游戏创建更多的NPC方面),我宁愿能够使用预定义的get变量(即collect=Y或attack=Y等)发送打开page.php的请求,让系统打开文件,运行文件,并在关闭数据库之前对其进行所需的任何查询

老实说,我对fopen的工作方式感到困惑,我读到的一些东西让我相信以上是可能的,而另一些则不然。

如有任何帮助,我们将不胜感激。

我要冒险解决你的问题(据我所知),而不是回答你的问题。

您的根本问题是,您已经将PHP文件视为完整的代码单元,从查询字符串中输入,处理特定于该文件的内容,并将输出返回给用户。这违反了"单一责任原则",因为这里至少有三个顶级责任:

  • 处理用户输入并决定适当的操作
  • 执行操作,包括操作数据库结构
  • 将操作结果反馈给用户

这些都可以分解为较小的任务——例如,连接到数据库的细节应该被排除在更抽象的操作之外,因为改变敌人的移动方式,以及将敌人存储在MongoDB文档而不是MySQL表中,不需要更改同一代码。

因此,解决方案是采用结构化编程,在现代PHP(和许多其他语言)中,这通常意味着采用面向对象编程。因此,在组织的第一层,你可能有:

  • 一个类,用于查看查询字符串,检查它是否有意义,并创建由它描述的操作的抽象列表
  • 表示某些操作的类,如"Attack"answers"Collect",它们从抽象列表中获取被攻击或收集的内容的详细信息,并返回一个不同的抽象列表,详细说明结果
  • 代表玩家的类,以及游戏中的敌人或对象,动作类可以使用这些类来计算不同情况下的结果
  • 用于获取操作结果并将其显示给用户的类

现在,你可以说"我需要创建一个操作列表,运行适当的操作,并以某种方式使用结果列表",而不是说"我必须创建一个查询字符串,运行页面将运行的代码,然后获取输出并以某种方式使用它"。

这听起来可能比强迫PHP运行现有代码要多得多,但它为您提供的创建现有功能的新组合的能力不容低估。