我一直在开发一个可视化某些数据的程序.我的程序从 MySQL数据库中获取特定输入并绘制一些图形(libchart库),创建一些表等.

我的问题是,现在它的代码地狱.我有大约7个PHP文件(索引,图形页面,图库等)与HTML / CSS和PHP / sql代码一起(其中一些只有PHP扩展但内部只有HTML).我暂时没有问题阅读和理解该项目,但我想如果有人试图,他可能会头疼.此外,继续这样的编程是不切实际的,因为该项目未来可能不容易扩展.

您对如何从PHP / sql成功分离HTML / CSS有任何建议吗?我不想使用框架,因为我没有做任何需要用户输入,会话处理等的事情.我只是运行一些查询并可视化结果.我主要在这里谈论建筑,如果适用,也许是一个脚本来帮助我(我已经读过Smarty,但我不确定这是否是我需要的).

Do you have any suggestion on how to successfully seperate HTML/CSS from PHP/sql?

恭喜您了解如何改进代码.这是前提条件,你需要改进它,而且主题很冗长.所以你的意志至关重要.

我轻轻一点,然后试着给出一些提示.由于您缺少经验,请先寻找一点,最重要的是下面列表的最后一点.但首先要做的事情是:

要将某些东西彼此分开,您需要有一些分隔的代码:

[HTML/CSS/PHP/sql]

[HTML/CSS] <--> [SEParaTOR] <--> [PHP/sql]

这里的Separator实际上也是PHP代码,但我认为你明白了.

正如您所看到的,只有Separator与HTML / CSS和PHP / sql进行了对话.

所以HTML / CSS和PHP / sql都需要有一个带有Separator的接口(它们之间的线)才能使它工作.

通常在程序中传递得到处理的数据.数据非常动态,并且可能具有复杂的复杂性,特别是如果您将数据传递给应该正确格式化的输出例程.

有多种方法可以编写这样的分隔符(或多个分隔符).您可以对软件进行分层,也可以提供在其区域或域中执行操作的组件.例如.您有一个数据库层或数据库组件,负责与数据库的交互.

或者你有一个模板引擎,它会将你的字符串和数组放入一些可读的HTML中.

简而言之,这就是软件设计的面食理论:

>意大利面条代码 – 一体化,代码交织在一起,最好是Bolognese或Aglio,Olio e Peperoncino.
>烤宽面条代码 – 分层,一层有两个与之相互作用的层(除非是底部或顶部),总是带有Béchamel酱.
> Tortelini代码 – 只做自己的工作的小组件,里面有肉类或辛辣蔬菜.

就像我们在生活中吃不同的意大利面一样,在编程时我们也需要处理所有这些不同类型的代码,并且随着时间的推移我们开发自己喜欢的味道.作为一个孩子,我们是饲料,但随着时间的推移,我们开始做自己的东西,并改变食谱.

所以我认为这是一个很好的观点,你现在不想在接下来的几周里吃MVC Framework X非常棒,因为有人告诉你这是现在吃的方式.在吃之前,有品尝,对吧?更不用说快餐了,你知道这些面条酱包装 – 只加水. Urgh.

我不知道您的输出需要哪些数据以及输入是什么.以下是输出HTML / CSS并与MysqL数据库交互的应用程序的一些粗略的重构技巧.这可能不是一个完整的列表,描述只能粗略地概述一些想法:

>将CSS移出HTML.在链接的CSS定义中有效使用选择器,如果还有一些,则替换任何样式属性.这使您的CSS代码可以重复使用并且更加模块化.它将帮助您找到HTML中的缺陷并将结构(HTML)与Presentation(CSS)分开.有效的HTML从有效使用CSS开始,这两者非常强大,通常这将减轻你的程序输出例程.
>将业务逻辑移出HTML. HTML和你的代码都可以成为野兽,所以最好将它们分开.他们倾向于互相争斗,而且两者都非常强大,在你开发应用程序时,战斗将继续,这会分散你的工作需要做的事情.
考虑一下您是否需要在应用程序中已经有复杂的输出,或者您是否可以传递带有子元素的数组(一个键是一个var,一个var可以包含一个字符串或数字或另一个var-array).通常,只需将复杂数据传递到视图或模板中即可.你的HTML只需要回应一些数组成员和/或foreach而不是子数组.这是一种创建模板的非常简单的技术.您可以使用PHP,因此您实际上非常灵活(只需将代码所属的边框绘制到视图层中,这是应用程序的一部分,例如为视图提供值).
>将sql移出代码.移动数据库交互代码.创建一个或多个对象,这些对象具有以您在实际处理代码中需要(消耗)它的方式返回数据的方法,例如$component-> getThatData(),然后以规范化形式返回数据.然后使这些组件使用专用数据库组件与数据库进行通信.在您的应用程序代码(业务逻辑)中,只使用数据库组件,最好是您创建的对象来获取数据,因此您在主代码中不再有任何sql行.
>划分和征服您的应用程序代码:将您的代码划分为Transaction Scripts.它们通常很容易从现有的意大利面条代码创建,并且很可能成为您正在寻找的中间分隔符.然后,他们将负责处理数据并将其传递(进入输出/视图).
>使用清晰的语言:如果您有复杂的未经规范化的格式化字符串数据,请编写自己的Parser类,这些类可以为您完成工作,并且可以轻松地重复使用(如果在您的应用程序中就是这种情况).正如您应该期望在代码中尽量减少使用纯sql一样,您也应该期待将复杂的正则表达式移开.封装变化的关键点.同样适用于处理某些数据的长例程(例如,按其他格式排序,排序和排列),将它们移动到每个数据的组件中,并考虑如何使它们可访问和可重用.
>使代码正常运行:了解如何在程序中调用功能的逻辑.您可以尝试将功能与调用它的方式分开.例如.一些调用任何Transaction Scripts的例程.如果您直接通过浏览器请求PHP文件,则可能不需要这样做,因为那些是您的事务脚本,并且Web服务器负责将通过URL发送的命令解析到您的应用程序中的事务脚本.但是,您应该将处理传入命令所需的任何逻辑及其参数包装成可重用的组件(例如,包含标准代码的Request类,以从HTTP请求获取URL和/或变量).
>通过在通过浏览器调用的所有文件的最顶部包含相同的文件来创建公共入口点.然后,您可以将公共代码(如设置应用程序会话状态对象并初始化数据库组件)放入其中,另请参阅Application Controller
>通过查找字面上重复的代码来删除重复.将其包装成函数或类.为您自己的应用程序创建一个库文件夹,并将其包含在其中.如果您使用类名和命名空间的常见模式,则可以轻松使用自动加载器来保持包含.使您的图书馆与第三方代码区分开来.将所有第三方代码放入其自己的库文件夹中,每个第三方组件都有一个子目录.
>使用轻量级现有组件.轻量级非常重要,因为您已拥有自己的代码,您不想转而将其全部压缩到框架上.
现有的很重要,因为您不想重新发明轮子.您将有足够的工作来重构您的代码.在您对应用程序感觉更好并且仍然拥有能力和意志之后,您可以随时编写所有新内容.但是,如果你是独自一人或在一个小团队中,现有的非常强大.
简单的库是例如:

>模板引擎:Mustache
>数据库层:NotORM

>创建应用程序状态,例如作为一个对象,你可以利用一些组件需要知道应用程序状态或彼此之间没有直接交互.默认情况下,如果您没有PHP,则使用全局和全局静态变量来创建状态.但是,随着代码的增长,这些变量会让您的生活更加艰当你创建一个应用程序状态对象时,很清楚哪些组件使用它,可以控制对它的访问(例如调用方法而不是读取变量,这可以帮助调试)和组件也可以找出它是否是正确的时间在应用程序流程中开始行动.它也是随着时间的推移重构代码的好工具.>保留工作应用程序,使代码保持运行状态.理想情况下,这将由自动测试支持.考虑一下你需要重写很多.例如,如果您开始集成数据库组件,请执行此操作.只需一步即可将所有现有代码移至该位置.那么谁告诉你它还在运行?使用git可以更好地撤消和测试内容.这比选择合适的库更重要.保留工作应用程序也始终是关键点,因为这就是你改变它的原因,对吧?

如何在我的PHP / SQL / HTML / CSS代码上实现MVC样式?的更多相关文章

  1. HTML实现代码雨源码及效果示例

    这篇文章主要介绍了HTML实现代码雨源码及效果示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. css绝对定位如何在不同分辨率下的电脑正常显示定位位置?(一定要看!)

    这篇文章主要介绍了css绝对定位如何在不同分辨率下的电脑正常显示定位位置,本文首先解释了常见的电脑分辨率,为了页面在不同的分辨率下正常显示,要给页面一个安全宽度,再去使用绝对定位,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。

  3. 详解HTML5中CSS外观属性

    这篇文章主要介绍了HTML5中CSS外观属性的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,,需要的朋友可以参考下

  4. HTML文本属性&amp;颜色控制属性的实现

    这篇文章主要介绍了HTML文本属性&颜色控制属性的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  5. CSS中实现动画效果-附案例

    这篇文章主要介绍了 CSS中实现动画效果并附上案例代码及实现效果,就是CSS动画样式处理,动画声明需要使用@keyframes name,后面的name是人为定义的动画名称,下面我们来看看文章的具体实现内容吧,需要的小伙伴可以参考一下

  6. 简洁自适应404页面HTML好看的404源码

    这篇文章主要介绍了简洁自适应404页面HTML好看的404源码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  7. amaze ui 的使用详细教程

    这篇文章主要介绍了amaze ui 的使用详细教程,本文通过多种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. HTML5适合的情人节礼物有纪念日期功能

    这篇文章主要介绍了HTML5适合的情人节礼物有纪念日期功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. 如何给HTML标签中的文本设置修饰线

    这篇文章主要介绍了如何给HTML标签中的文本设置修饰线,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  10. Html5自定义字体解决方法

    这篇文章主要介绍了Html5自定义字体解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部