gpt4 book ai didi

php - 设置我的程序代码的最佳方法

转载 作者:行者123 更新时间:2023-12-04 04:58:39 27 4
gpt4 key购买 nike

我正在创建一个新程序。它的创建方式是我以前从未创建过的。该程序主要包括以下内容:

  • 索引.html - 界面,只是HTML代码
  • Action Controller .js - 包含在 index.html 中,它包含接口(interface)元素的 jquery 钩子(Hook),进行 Ajax 调用并更新接口(interface)
  • ExampleAction.php - ActionController 使用 Ajax 调用的众多“Action”文件之一。它根据文件做了很多事情,但文件的布局是相同的。

  • 我在使用此设置时遇到的问题如下:

    1.我无法为我的数据库类创建一个单例,因为使用 ajax 我被迫在每个 ExampleAction 文件中创建一个新的数据库实例。这是正常行为还是应该有可能并且可能是我的代码中的某些内容?如果它应该是可能的并且它在我的代码中,我会在稍后发布它。

    如果我不够清楚,这就是我尝试过的:
    - 我将 index.html 重命名为 index.php(当然)。
    - 在这个文件的顶部包括我的数据库单例。
    - 对 ExampleAction.php 进行了 ajax 调用。
    - ExampleAction.php 无权访问数据库类,我必须再次包含它并创建一个新实例。

    2.当我进行 Ajax 调用时,我通过 POST 发送参数。 ExampleAction 的总体布局如下:
    $actionInstance = new ExampleAction();
    class ExampleAction {
    public __construct() {
    this.GetAction();
    }

    private GetAction() {
    $action = $_POST['action'];
    switch ($action) {
    case "Login":
    this.Login();
    break;
    }

    //Login function, etc. here

    }
    }

    当然,我的真实代码包含 sanitizer 等,switch语句更长,并且包含更多功能

    我不喜欢这件事有两点。我不喜欢每次调用文件时都必须实例化对象,但我想这无济于事。

    第二件事是,如果我有很多功能,我的开关就会变得很大。

    所有这些问题都让我觉得我做错了。

    TL;DR:
    我正在寻找设置程序的最佳方法,例如我正在制作的程序。我感觉我的代码变慢了(因为 ajax 调用的数量越来越多),并且每分钟都更难维护(因为越来越多的 switch 语句。

    最佳答案

    您必须为每个 AJAX 调用实例化一个新对象的原因是因为 AJAX 调用是客户端对您的服务器的一个新请求。被调用的脚本不在您的程序中运行,任何设置都必须在 AJAX 调用脚本时完成。

    解决此问题的最佳方法是使用利用 MVC 的框架,例如 codeigniterZend Framework .简而言之,如果使用正确,使用 MVC 框架将消除您为每个 AJAX 调用实例化对象的需要,因为这是由 Controller 处理的,并且您将能够丢失您的 switch 语句,因为每个 AJAX 调用都可以是一个唯一的 URI处理所有这些不同调用的单个 Controller 。

    编辑:回复评论
    不幸的是,我对 Zend Framework 没有任何经验,但我确信前提与 Codeigniter 中的几乎相同。因此,在 Codeigniter 中,您将拥有一个扩展主 Controller 的 AJAX Controller ,因此可以访问数据库以及在主 Controller 中设置的所有其他内容。

    在 AJAX Controller 中,您将有不同的方法来处理所有不同的 AJAX 调用,就像这样。

    //CI_Controller is codeigniter's base Controller
    class AjaxController extends CI_Controller {
    public function __construct() {
    parent::__construct();
    $this->output->set_content_type('application/json');
    // Can make calls to anything a normal controller can do
    }

    public function doSomething() {
    // You have access to the database because you are extending
    // and calling the parent constructor
    // $this->db->query();
    }

    public function doSomethingElse() {
    ...
    }

    要调用这些 AJAX 函数,您的 URI 将是 http://mysite.com/Ajax/doSomethighttp://mysite.com/Ajax/doSomethingElse

    正如我之前指出的,AJAX 调用是客户端对服务器的全新请求。当用户请求页面时,您的 PHP 代码将在服务器上运行并将输出发送到客户端。任何 javascript 都在用户浏览器中运行。如果您的 javascript 进行 AJAX 调用,这是对您的服务器的新请求,并且在原始请求中的 PHP 完成后发生。

    关于php - 设置我的程序代码的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16437102/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com