首页
学习
活动
专区
圈层
工具
发布

谈对象MVC多端

PHP中有函数和方法两种不同的function,函数是应该是公共的,就像前面提到的pubfunc.c一样,还有一些类也是公共的,比如分页类、加密类等,这些文件里面不应该与项目的业务逻辑有耦合关系,应该拿出来给另外一个项目也是通用的...如下图所示,浏览器发出的请求分成两大类,一类是页面请求(红色箭头+蓝色箭头),一类是AJAX纯数据请求(绿色箭头+蓝色箭头),服务器上的代码资源也分为两类,一个是PHP框架的(青底黑框表示),一个是自主开发的...2、页面请求(根据URL判断)全部转发到页面控制器中(暂时只有IndexController一个),然后调用逻辑控制器;AJAX请求则直接分发到对应的逻辑控制器,逻辑控制器通过一定的策略判断需要AJAX...3、比较简单的逻辑直接在逻辑控制器中处理,直接使用“表模型”访问数据库,我这里说的“表模型”是指没有定义Model类,但是使用对象的方式去操作数据库,通常以表为操作单位,相当于ThinkPHP框架中的M...我是PHP程序猿,我只有一半对象(PHP的吉祥物是一只象,即半对象,而且PHP可以用或完全不用对象来写程序 ?

97220
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一个线上问题让我发现了Calendar类中的秘密-周一真的是每周的第一天吗?

    就在这时,组长找上了我,告诉我节前的这个需求有问题:今天明明才周日,但是未完成的业务已经查询出来了,应该到了周一才能找出来才对。本来我是十分自信的,毕竟这么简单的需求,我还不能把它拿捏了吗?...那么只能往更深层次看,于是点进Calendar相关的源码发现了其中的秘密:在Calendar类中,周日被默认为每周的第一天,周一为每周的第二天。...那么回到我们上面的代码,问题的原因就水落石出了:今天是周日,在周日这天获取的本周一自然就是明天,在我们看来就是获取到了下周一,这里程序逻辑上没问题,但与我们实际场景使用逻辑相悖,因此针对周日需要特殊处理下...JDK自带的类库,现在越来越多优质的开源类库不断涌现,可以让我们轻松实现日期时间相关的操作,比如Hutool(Ps:不是广告)的星期操作默认就是以周一为第一天: //1.获取当前周的周一 //1-1...,但是也提醒我们日常开发中无论是使用JDK自带的类库还是开源的工具类,对于其实现还是要有所了解的,这样在遇到问题的时候才能从容应对。

    47010

    第一篇博客

    最后确定应该在跳转的页面后发送两条ajax请求,一条用来接收本地循环的字串,一条用来储存到服务器的字串。 在服务器配置里的nginx和php交互的时候,踩了很多坑。...图片 在这样的配置条件下,我的ajax请求不再返回php原代码了,返回了另外的错误。 图片 而且文件夹下我新写了一个phpinfo页面,nginx提示404,尚未找到配置错误问题。...解决了问题,事实上我重启了一次php-fpm,phpinfo页面出来了,说明php文件被解析了。然后我改了ajax样式,用了jquery并且把ajax相关代码放到了body靠前的位置。...ajax中跨域访问没有那么容易实现,也就是我nginx只有root下的内容才能被ajax访问,其余位置都属于跨域,这导致一些其他文件都只能放在项目里。...php文件这样调试极其不方便,php语言里有什么错误我只能肉眼去看,错误并不能alert出来,我没找到好的解决办法。

    56730

    VFP动态网页开发,效率绝杀ASP,只看这篇文章就行了

    开发工具: VFP9 7223,HBULIDX,祺佑三层开发框架(猫框) 当初JS只是一种脚本语言,而且没有什么地位,自从AJAX横空出世,JS发展一路绝尘,但也只是在浏览器前端上跑得风生水起,后端必须是...PHP,Python,JAVA,C#等等,但有一位聪明的程序员,利用了现成的谷歌的V8引擎改造了JS,让它能够跑在后端服务器上,自从有了Node,JS就成了与PHP,Python等平起平坐的语言了。...VFP的各种命令,你可以调用自定义函数,自定义类,妥妥的无压力。...其实我更建议把HTML当模板使用,所有的数据应该在Controller类中处理好,而不是在HTML中写取数据的代码,不管怎么样,多条模式总是好的。 此功能由myfll瓜哥开发,特别鸣谢瓜哥。...现在框架支持 类ASP混合模式开发 前后端分离模式开发

    2.2K20

    Web应用程序开发指南

    客户端脚本通常可由站点的任何访问者查看(从视图菜单中单击“查看源”以查看源代码)。...(PHP的面向对象的Web应用程序框架) ASP(Microsoft Web服务器(IIS)脚本语言) ASP.NET(微软的Web应用程序框架 - ASP的后继者) ColdFusion(Adobe的...通用高级编程语言和Server Side Scripting语言 - 自由分发) 程序库 程序库是常用函数,类或子程序的集合,它们允许开发人员轻松地向框架化或模块化类型应用程序添加或编辑功能,从而提供易于开发和维护...Web应用程序框架旨在通过设置文件夹组织和结构,文档,指南和库(常用功能和类的可重用代码)来简化编程并促进代码重用。 Web应用程序框架的优点 程序操作和逻辑与HTML,CSS和设计文件分开。...这些规则和标准适用于编码逻辑,文件夹结构和名称,文件名,文件组织,格式和缩进,语句,类和函数以及命名约定。这些规则还强制编写明确的注释并提供文档。

    1.7K20

    ajax怎么解决报414,关于c#:HTTP错误414。请求URL太长。 asp.net

    从下面的文章中,我了解到这是由于查询字符串很长所致: 在web.config中,我有maxQueryStringLength=”2097151″。 这是最大值吗?...为了解决此问题,我应该在web.config中设置maxUrl吗? 如果是这样,支持的最大值是多少? 我该怎么办才能解决此错误? 是否可以将URL中的某些长字符串替换为整数或Guid?...因此,很难确切地说出该URL的长度。答案建议URL中的字符数保持在2000以下。我不知道您的查询字符串为什么这么长。你能缩短吗?在不进一步了解解决方案和查询字符串的情况下,很难给您任何建议。...将所需的值分配给此类属性,然后根据需要在ViewState或Session中添加此类,并在您的应用程序中使用它。 因此,您无需将大量数据传递到查询字符串中。 希望这对您有帮助。...只是为了补充,如果您尝试使用大量参数,请使用Request ajax并接收414错误。将dataType属性更改为JSON,然后以POST类型提交。 这解决了我的问题。

    2K10

    ApacheCN PHP 译文集 20211101 更新

    应用 一、遗留应用 二、先决条件 三、实现自动加载器 四、整合类和函数 五、用依赖注入替换全局 六、用依赖注入替换新建 七、编写测试 八、将 SQL 语句提取到网关 八、将领域逻辑提取到事务中 十、...提取表示逻辑来查看文件 十一、提取动作逻辑到控制器 十二、替换类中的包含 十三、公共和非公共资源分开 十四、将 URL 路径与文件路径解耦 十五、删除页面脚本中的重复逻辑 十六、添加依赖注入容器 十七、...结论 十八、附录 A:典型遗留页面脚本 十九、附录 B:网关前的代码 二十、附录 C:网关后的代码 二十一、附录 D:事务脚本后的代码 二十二、附录 E:采集表示逻辑前的代码 二十三、附录 F:采集表示逻辑后的代码...Web 服务 六、构建聊天应用 七、构建异步微服务架构 八、为自定义语言构建解析器和解释器 九、PHP 中的反应式扩展 PHP Ajax 秘籍 零、序言 一、Ajax 库 二、基础设施 三、使用 jQuery...的有用工具 四、高级工具 五、调试与故障排除 六、优化 七、实现构建 Ajax 网站的最佳实践 八、Ajax 互操作 九、iPhone 和 Ajax PHP 和 Netbeans 应用开发 零、序言

    4.7K10

    前后端跨语言同构——邂逅一场美丽的编程童话

    如果我们不想实现一个 JS 中运行 PHP 的 PHPvm,或者一个 Java 中运行 JS 的 JSrunner,那么我们为何不寻找一种基于协议的同构方案呢?...在完成字段总和的校验之后,单个字段的值,需要符合规定的逻辑,这里的逻辑就包含该值应该是什么数据类型,值的大小应该在什么范围,以及如果这是一个结构体,应该具备什么结构,具体结构节点上的数据类型又应该是什么...这……要用纯文本描述,还得把业务特殊性给兜住,办不到……办不到…… 等等,真的办不到吗? 用静态的方式,概括动态的上下文,这件事我们没做过吗?在前端开发中,我们天天在做。...“实例”来自“类”,而“类”不就是静态的吗?或者,“接口”不就是静态的吗?...和从后台加载真实脚本到前端立即执行不同,TDL 需要先接收再解释后执行。加载脚本是不够安全的,前端并不能确保动态传输的脚本是否安全,但 TDL 是安全的。

    1.4K30

    yii2开发中19条推荐实践

    模型的重要性 很多yii2的初学者喜欢将大量逻辑写到控制器的动作(action)中,这是不对的,我们的重点应该在模型中,而控制器仅仅是做输入输出。 我们拿关联举个例子,下面的这段代码是不好的。...使用迁移脚本 我说过了很多次,本篇还是要说一次,对于一个yii2程序的数据库部分请用migration来管理。 并且这些脚本应该一起放到到你的版本控制里,记住,迁移脚本一般包含两个部分。...结构脚本 种子数据的导入 很多人都忽略了第二类。...另外在做迁移脚本的时候,如果你的表有前缀,那么在脚本里的写法如下 {{%user}}// discuz_user 时间问题 使用yii2开发mysql类web应用的时候,数据表的时间类字段我们喜欢用时间戳...当然从理念上说也有点不同 行为 一些类附加的属性 父类 一些类共同的属性 我的用法(不一定就是对的),尤其在模块中我喜欢为控制器增加一层父类。

    4.2K70

    php异步执行

    开发中遇到了群发邮件慢的问题,找到了以下方法,还不错分享下: PHP异步执行的常用方式常见的有以下几种,可以根据各自优缺点进行选择: 1.客户端页面采用AJAX技术请求服务器 优点:最简单,也最快,就是在返回给客户端的...HTML代码中,嵌入AJAX调用,或者,嵌入一个img标签,src指向要执行的耗时脚本。...缺点:一般来说Ajax都应该在onLoad以后触发,也就是说,用户点开页面后,就关闭,那就不会触发我们的后台脚本了。 而使用img标签的话,这种方式不能称为严格意义上的异步执行。...用户浏览器会长时间等待php脚本的执行完成,也就是用户浏览器的状态栏一直显示还在load。 当然,还可以使用其他的类似原理的方法,比如script标签等等。...缺点:这种方法不能通过HTTP协议请求另外的一个WebService,只能执行本地的脚本文件。并且只能单向打开,无法穿大量参数给被调用脚本。并且如果,访问量很高的时候,会产生大量的进程。

    4K120

    【黄啊码】如何使用thinkphp结合wokerman实现分组群聊

    大家好,我是黄啊码,关于php的课程咱们好像停更了一小段时间了,今天继续,讲讲怎么使用wokerman实现分组群聊,不知道怎么用tp搭建wokerman的,请看下边链接,我不会再做阐述:【黄啊码】windows...与MVC系统整合的原则: ·现有mvc框架项目与GatewayWorker独立部署互不干扰; ·所有的业务逻辑都由网站页面post/get到mvc框架中完成; ·GatewayWorker不接受客户端发来的数据...而所有的业务操作都应该在web系统中实现。...因此我创建了一个GatewatServer.php的controller,负责处理这些业务 的消息添加到div中进行显示 // 向面板中增加新接收到的消息 // 其中message是消息,color是显示的颜色,主要为了区分主播以及自己发送的消息和系统提示 function

    59210

    myPagination5.0 分页简单实例「建议收藏」

    大家好,又见面了,我是全栈君。 记得最開始做分页採用的ThreadLocal对象,后面发现有有了更简便的方法,直接使用插件,不但简单。并且高效!...如需与server进行交互,需配置成 true callback string 回调函数,纯字符串不带括号,需在 Javascript 脚本中 配置 一个 与 该字符串同样名字的方法,并带有參数,如:function...与动态脚本语言无关。...可訪问 Jsp,PhP,CGI,Asp等等 dataType string 从server返回的数据类型,插件依据server返回的类型来进行处理后返回,支持 Html Json Xml pageContId...依据该 Id 从server中 获取 PageCount 总页数 param Object Ajax 參数对象,进行 Ajax请求时。可依照条件来查询分页。

    1.5K30

    【黄啊码】如何使用thinkphp结合wokerman实现分组群聊

    大家好,我是黄啊码,关于php的课程咱们好像停更了一小段时间了,今天继续,讲讲怎么使用wokerman实现分组群聊 ---- 实现原理: 1....与MVC系统整合的原则: ·现有mvc框架项目与GatewayWorker独立部署互不干扰; ·所有的业务逻辑都由网站页面post/get到mvc框架中完成; ·GatewayWorker不接受客户端发来的数据...而所有的业务操作都应该在web系统中实现。...因此我创建了一个GatewatServer.php的controller,负责处理这些业务 的消息添加到div中进行显示 // 向面板中增加新接收到的消息 // 其中message是消息,color是显示的颜色,主要为了区分主播以及自己发送的消息和系统提示 function

    73070

    创建联系表单页面并通过 Ajax 提交表单请求数据

    (['get', 'post'], 'contact', 'HomeController@contact'); 我们将请求处理逻辑都放到了 HomeController 控制器对应的 Action 方法中实现...3、提交表单请求 在上面的视图模板中,可以看到最后额外引入了 /js/contact.js 文件,这个文件是联系表单页面需要额外用到的 JavaScript 脚本文件,目前还不存在,需要编写对应的前端处理代码...中的处理代码。...4、访问联系表单页面 完成以上工作后,在项目根目录下的 webpack.mix.js 中添加 contact.js 编译代码: mix.js('resources/js/app.js', 'public...这个处理逻辑是前端的,表单数据前端验证通过发送给后端的验证和处理逻辑,我们放到下篇教程介绍。 (全文完)

    3.2K50

    RuntimeException: Unable to boot ApiServiceProvider, configure an API domain or prefix 解决办法和原因所在

    php laravel 背景描述 项目使用的是laravel5.3,公司新招了个学妹写前端,于是我觉得应该改变一下项目结构,我负责写api,她渲染界面,使用ajax动态无刷新,前后端分离。...问题产生 我自己本地肯定是没这一类问题的,中午的时候学妹说接口500了,我一看,还真他娘的500了,response也没返回错误信息,于是我打开错误日志,发现了这么一条: production.ERROR...我是一个刨根问底的人,在我的不懈努力下发现,原来这是php ts 版本会出现的问题。 原因所在 这其实是php的一个已知问题(只是对于我来说是未知 :p) 问题仅仅出现在php ts版本中。...当PHP是线程安全的时候,putenv()和getenv()存在一个问题:如果在一个请求结束之前调用另一个请求,那么当第一个脚本完成时,它的环境变量将被重置。...这对于Ajax请求来说是有问题的,或者仅仅是当用户在新标签中打开多个链接时。 下面我以laravel为例重现此问题。

    1.2K30

    ajax php投票记录功能,PHP 实例 AJAX 投票 | 菜鸟教程

    大家好,又见面了,我是你们的朋友全栈君。 PHP 实例 – AJAX 投票 AJAX 投票 在下面的实例中,我们将演示一个投票程序,通过它,投票结果在网页不进行刷新的情况下被显示。...你喜欢 PHP 和 AJAX 吗? 是: 否: 实例解释 – HTML 页面 当用户选择上面的某个选项时,会执行名为 “getVote()” 的函数。该函数由 “onclick” 事件触发。...vote=”+int,true); xmlhttp.send(); } 你喜欢 PHP 和 AJAX 吗?...是: 否: getVote() 函数会执行以下步骤: 创建 XMLHttpRequest 对象 创建在服务器响应就绪时执行的函数 向服务器上的文件发送请求 请注意添加到 URL 末端的参数(q)(包含下拉列表的内容...’]); // 获取文件中存储的数据 $filename = “poll_result.txt”; content = file(filename); // 将数据分割到数组中 array = explode

    8.4K20

    新人自学前端到什么程度才能找工作?

    变量、函数、对象、new一个实例、添加onclick事件,这些基本的东西都不难。再往后ajax、json、{}、复杂业务逻辑,搞不明白了。...然后这个a=>b=>c=>d=>a的逻辑里,还有很多的判断,各种的变体。 懵了。脑子里是一团乱麻,就像小猫玩线团一样,找不着头儿在哪了。 这时候,他一打方向盘,拐到php去了。...php虽说是脚本语言,但它也可以算后端了,自然更复杂些。于是一把轮又拐回到Js了。就这么来回倒腾,这样的人不在少数,时间就这么过去的。 ? 这个时候的“他”,是个什么状态呢?...然后再说其它的,什么this指向啊,prototype啊,new一个对象的原理啊,ajax的使用及原理啊,继承啊,设计模式啊,数据驱动视图思想、业务分析、开发逻辑啊...等,基本上就都不会了。...就例如你学会了在input上添加onclick事件,然后我告诉你用prototype原型模式,你都不知道怎么用?在什么时候?什么地方用?这个就需要实践的积累。 3、找工作,运气也很重要。

    2.8K20

    震惊!北京一男子竟然用swoole做了这种事!

    但是,我还是偷了两点儿懒: 我实在懒得实现【数据库查询并生成csv或excel】这个功能了,这个地方我用一个sleep函数去模拟了一下 没有写网页而是用curl模拟了网页,模拟了点击【导出】和等待ajax...知道这叫什么吗?这就叫业务模型抽象能力......根目录中,再进入到example目录中,执行php http_client.php 但是!...mysql资源句柄 // 模拟30秒钟文件处理过程 // 你可以在下面这里处理你的数据查询逻辑,以及查询完毕后如果生成为csv或者excel文件的逻辑 // 这个数据库查询没啥用...你们这是什么意思吗?注意看第一个进程PID为5561的进程自从第一次出现后,就再也没有出现过,其他PID则是轮流重复出现,为什么?

    1.4K00
    领券