草庐IT

php - 关于制作 PHP/Javascript/MySQL 框架的建议?

coder 2023-10-11 原文

我已经考虑这个问题一段时间了,尽管经过了很多思考和尝试,但一直无法概念化最好的方法。我需要了解如何在数据库、服务器端代码和客户端代码方面最好地组织交互式 Web 应用程序的数据流的最佳实践。我现在使用的语言是用于数据库的 MySQL、用于服务器端语言的 PHP 和用于客户端代码的 JavaScript/CSS/HTML/jQuery。我正在尝试找到一种聪明的方法,让用户可以安全地从数据库中执行选择、更新、删除和插入等操作,并使其以漂亮的格式显示在网页中。

我已经非常擅长制作美观的交互式网站、编写出色的 PHP 应用程序以及设置有组织且高效的数据库架构。然而,我一直在努力寻找一种抽象而有效的方法将它们联系在一起。 我不打算使用现有的框架。这根本不是我的选择。我是那种需要了解事物运作方式及其作用的人。然而,我会查看现有的指针框架,但到目前为止我所看到的所有这些框架大多让我感到困惑。

以下是关于我的框架需要考虑的一些事项:

  1. PHP 代码以 JSON 格式从 MySQL 服务器返回数据并返回到客户端。例如,查询 Martin Scorsese 电影的数据库可能会返回如下内容:

    { totalRecords: 2, records: [{ title: 'The Departed', year: '2006' }, { title: 'Goodfellas', year: '1990' }] }
    

    客户端接收并解析。

  2. 对于对数据库的无效调用,例如无效登录,返回带有“false”的有效 HTTP 响应(从而调用成功回调)或返回无效 HTTP 错误消息(因此调用失败回调)。

  3. 我不确定如何设置 PHP。我应该为每种类型的 mysql 操作(例如“SELECT”、“UPDATE”、“DELETE”和“INSERT”)创建一个函数吗?它应该只是一个函数库还是全部包含在一个类中?是否出于某种原因需要多个类或某种类层次结构?数据访问有哪些好的做法?

  4. 我一直在使用 jQuery 的 ajax 函数从客户端调用服务器端以检索 JSON 字符串,然后对其进行解析。成功回调函数在成功调用时调用,它接收 JSON 格式的字符串。从这里我几乎不知道该怎么做。我正在考虑将返回的 JSON 字符串发送到某种函数中,该函数将解析 JSON 并返回类似 HTML 格式的表格以显示结果。但是,我不确定如何设置类层次结构。

  5. 我的老板告诉我一个看起来像这样的层次结构:

但是,我不完全确定为什么需要这么多部件,例如数据连接器、适配器、管理器/提供程序、 Controller 和 View 。我确定我会需要其中一些但不是全部,而且我也不确定设置类结构的最佳方法是什么。请注意,我对 MVC 方法有些陌生。

代码需要尽可能抽象和可重用!目前我有一大堆意大利面条代码,它让我在内心哭泣:'-(

那么呃...这就是我目前所在的位置。任何帮助将不胜感激,因为我觉得我是一只迷路的小狗,没有得到它,而且我快速编写的任何代码都变得草率,无法使用或无法维护。如果您可以对您使用的自己的框架提供任何见解,或者花时间阅读我的长篇文章并评估我自己的文章,我们将不胜感激任何让我以不同方式思考它的意见。 :-)

最佳答案

阅读本书:http://martinfowler.com/books.html#eaa或与设计模式类似的东西。考虑重新访问现有的开源框架并提出问题。我从个人经验中知道,在复杂项目的研究和设计之前编码是一种浪费。即使您没有从中产生任何东西,您也会学到一些有用的东西。

关于php - 关于制作 PHP/Javascript/MySQL 框架的建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7208459/

有关php - 关于制作 PHP/Javascript/MySQL 框架的建议?的更多相关文章

  1. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  2. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  3. 动漫制作技巧如何制作动漫视频 - 2

    动漫制作技巧是很多新人想了解的问题,今天小编就来解答与大家分享一下动漫制作流程,为了帮助有兴趣的同学理解,大多数人会选择动漫培训机构,那么今天小编就带大家来看看动漫制作要掌握哪些技巧?一、动漫作品首先完成草图设计和原型制作。设计草图要有目的、有对象、有步骤、要形象、要简单、符合实际。设计图要一致性,以保证制作的顺利进行。二、原型制作是根据设计图纸和制作材料,可以是手绘也可以是3d软件创建。在此步骤中,要注意的问题是色彩和平面布局。三、动漫制作制作完成后,加工成型。完成不同的表现形式后,就要对设计稿进行加工处理,使加工的难易度降低,并得到一些基本准确的概念,以便于后续的大样、准确的尺寸制定。四、

  4. TimeSformer:抛弃CNN的Transformer视频理解框架 - 2

    Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图

  5. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  6. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  7. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  8. ruby-on-rails - 关于 Ruby 的一般问题 - 2

    我在我的rails应用程序中安装了来自github.com的acts_as_versioned插件,但有一段代码我不完全理解,我希望有人能帮我解决这个问题class_eval我知道block内的方法(或任何它是什么)被定义为类内的实例方法,但我在插件的任何地方都找不到定义为常量的CLASS_METHODS,而且我也不确定是什么here,并且有问题的代码从lib/acts_as_versioned.rb的第199行开始。如果有人愿意告诉我这里的内幕,我将不胜感激。谢谢-C 最佳答案 这是一个异端。http://en.wikipedia

  9. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

  10. ruby - sinatra 框架的 MVC 模式 - 2

    我想开始使用“Sinatra”框架进行编码,但我找不到该框架的“MVC”模式。是“MVC-Sinatra”模式或框架吗? 最佳答案 您可能想查看Padrino这是一个围绕Sinatra构建的框架,可为您的项目提供更“类似Rails”的感觉,但没有那么多隐藏的魔法。这是使用Sinatra可以做什么的一个很好的例子。虽然如果您需要开始使用这很好,但我个人建议您将它用作学习工具,以对您来说最有意义的方式使用Sinatra构建您自己的应用程序。写一些测试/期望,写一些代码,通过测试-重复:)至于ORM,你还应该结帐Sequel其中(imho

随机推荐