摘要: 本文从“我们为什么要使用路由”这个问题出发,开始引入单一入口机制,同时讨论“是不是一定要使用控制器”的问题,在了解控制器内部的构造中,同时也了解视图的简单实现。单一入口机制作为MVC的核心,写在第一章节再合适不过了。本文对视图讲解较少,会另外写文说明。「七天自制PHP框架」现在开始连载,期间还会增补一些框架可选功能的开发教程,适合掌握PHP语法和面向对象思想的读者,另外也感谢各位读者的关注和支持,请多多指教。 阅读全文
posted @ 2017-04-30 10:46 编程老头 阅读(3808) 评论(3) 推荐(1) 编辑
摘要: 刚刚开始学做一个WebAPP,数据查询的一般套路是通过一张PHP页面读取数据库,获得列表后“嵌写”在PHP页面中,虽然写法上丑陋至极,但也有“快糙猛”出效果的成就感,如图。 后来想想,不对啊,难道以后PHP就全这么写?还是只有这个语言是这么写?搞了搞ASP.NET,代码的美观程度也好看不到哪里去啊, 阅读全文
posted @ 2018-08-03 02:37 编程老头 阅读(668) 评论(0) 推荐(0) 编辑
摘要: 这里以行政区数据为例: 一级行政区数据范例: 二级行政区范例: 三级行政区范例: 在Model层建立三个Model 因为非常反感每次做外键链接时写不完的FOR循环和IF判断,所以做了个HasMany的一对多关系,增强代码复用性 在Controller层绑定关系 最后把数据导出为JSON格式 阅读全文
posted @ 2018-08-02 21:44 编程老头 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 先看一张科学家的生卒年月表 截取科学家的出生年份可以很方便的用left函数截取,如果要截取去世年份,需要先获取字符“—”的位置。 阅读全文
posted @ 2018-07-26 23:51 编程老头 阅读(1030) 评论(0) 推荐(0) 编辑
摘要: 2014年年初的时候,曾经受委托完成一个视频网站,那时最大的技术障碍是一个大视频比如500MB,在一个带宽环境不怎么快的服务器(比如1Mbps)上提供播放的问题。 这里会遇到两种情况,第一种情况是客户机加载完整个视频,然后播放。第二种情况是客户机正在加载这个视频,视频卡在页面上,无法播放。 于是,我 阅读全文
posted @ 2018-07-19 21:16 编程老头 阅读(1632) 评论(0) 推荐(1) 编辑
摘要: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim Endrow As Single Dim myTarget As Range Endrow = Cells(65525, 8).End(xlUp).Row Application.EnableEvents = False Set myTarget = Target ... 阅读全文
posted @ 2018-06-11 13:27 编程老头 阅读(3785) 评论(0) 推荐(0) 编辑
摘要: 前阵子在用python写一些小程序,写完后就开始思考怎么给python程序配一个图形界面,毕竟控制台实在太丑陋了。 于是百度了下python的图形界面库,眼花缭乱的一整页,拣了几件有“特色”有“噱头”的下载下来做了个demo,仍旧不是很满意,不是下载安装繁琐,就是界面丑陋或者难写难用,文档不齐全。 阅读全文
posted @ 2017-08-21 00:48 编程老头 阅读(10388) 评论(7) 推荐(3) 编辑
摘要: 问题:最近要上线一个PHP写成的MVC项目,发现Windows Server 2008安装的还是PHP5.2,很多语法不支持。 尝试的一些解决方案: 1.将PHP升级为5.6,但是需要做好IIS和PHP的配置,因为IIS还承担了其他几个Web项目的运行,所以这个方案也是目前最稳妥的办法。 2.在Windows Server 2008上安装Apache或者Nginx,因为Apache或者Nginx和PHP搭配更佳,但是Apache在Windows Server 2008上表现不好,另外这个方案还有个缺点是另外需要配置子域名等,之前没有研究过这方面,所以这个方案备选。 阅读全文
posted @ 2017-07-30 11:45 编程老头 阅读(10644) 评论(0) 推荐(0) 编辑
摘要: 对于数据库中一个典型的“一对多”的模型,怎样完成数据关联?有人说,为什么不用SQL中的where或者join来查询? 拼接SQL,对于简单的SQL来说尚且高效,但是对复杂SQL来说,编写和调试都不方便,关键是查询完得到的多维数组,还需要写一段代码来组装成对象数组,让我不得不思考怎么避免这种低效劳动。 我的方案是每一个Model都实现一套查询接口,让你尽量少写select。同时用一个HasMany函数来实现数据关联。 阅读全文
posted @ 2017-06-28 18:28 编程老头 阅读(1410) 评论(0) 推荐(0) 编辑
摘要: 往期回顾:「七天自制PHP框架」第二天:模型与数据库,点击此处 原文地址:http://www.cnblogs.com/sweng/p/6624845.html,欢迎关注:编程老头 为什么要使用设计模式? 设计模式,我的理解是为了达到“可复用”这个目标,而设计的一套相互协作的类。 感兴趣的读者可以阅读《Design Patterns: Elements of Reusable Object-Oriented Software》,四位作者(Gang of Four)在书中列举了业界闻名的23种设计模式。 这里先介绍我们框架要涉及的三种设计模式。 阅读全文
posted @ 2017-05-06 21:54 编程老头 阅读(2105) 评论(0) 推荐(1) 编辑
摘要: 往期回顾:「七天自制PHP框架」第一天:路由与控制器,点击此处 什么是模型? 我们的WEB系统一定会和各种数据打交道,实际开发过程中,往往一个类对应了关系数据库的一张或多张数据表,这里就会出现两个问题。 1.类和数据表,一方修改会导致另一方的修改,只要数据表结构不定下来,业务逻辑的开发几乎没法开工。 2.获取数据时会牵涉很多SQL语句的拼接,如果数据结构变动,这些SQL需要改写。 阅读全文
posted @ 2017-05-01 22:00 编程老头 阅读(1862) 评论(2) 推荐(1) 编辑
摘要: 先编辑command.php文件 然后编辑console.php文件 原本想要包含并执行这个echo,没想到写错了文件名,如果是require,会报出这样的错误: 如果把require改为include 会报出这样的错误: 如果使用require_once或者include_once,只要包含路径正 阅读全文
posted @ 2017-04-22 21:17 编程老头 阅读(2074) 评论(2) 推荐(0) 编辑
摘要: 刚刚开始学Laravel就会接触到路由 后来笔者一本正经的去读过Route类的代码,惊讶的发现并没有get这个方法,之后了解到Laravel用了Facade模式。 Facade本质上是一个“把工作推给别人做的”的类。 Facade存在的价值,可以从服务容器谈起。服务容器,可见我的另一篇博文,地址:h 阅读全文
posted @ 2017-03-20 09:00 编程老头 阅读(7684) 评论(1) 推荐(2) 编辑
摘要: 用了一阵Laravel后发现很少有include和require,觉得有点奇怪,思考Laravel是怎么完成文件导入的。 其实Laravel依旧还是用include或者require的,只是都写在一个函数里了。 就像这样: 一般每次导入的PHP文件不只一两个,会有很多,所以要定义一个数组来存储“类和 阅读全文
posted @ 2017-03-19 19:38 编程老头 阅读(1866) 评论(0) 推荐(0) 编辑
摘要: 「七天自制PHP框架」已经开始连载,谢谢关注和支持!点击这里 首先,先做一个简单的表单页面 编辑一条路由 创建一个控制器 阅读全文
posted @ 2017-03-13 22:09 编程老头 阅读(12504) 评论(1) 推荐(1) 编辑
摘要: 适用场景:分析数据(日志) 示例: 在\app\Console\Commands目录下已生成一个Check.php文件 你可以把$signature改为你要的命令名称 此时还不能在控制台中调用,需要在Kernel.php中注册。 你已经可以在控制台中使用这个命令了 点评:似乎也没啥用,因为php本身 阅读全文
posted @ 2017-03-13 09:35 编程老头 阅读(9965) 评论(0) 推荐(0) 编辑
摘要: 「七天自制PHP框架」已经开始连载,谢谢关注和支持!点击这里 先看一个例子: 上面代码,我们很容易理解一句话: A类依赖B类和C类 也就是说,如果今后开发过程中,要对B类或者C类修改,一旦涉及函数改名,函数参数数量变动,甚至整个类结构的调整,我们也要对A类做出相应的调整,A类的独立性丧失了,这在开发 阅读全文
posted @ 2017-03-12 15:12 编程老头 阅读(11854) 评论(3) 推荐(4) 编辑
摘要: 「七天自制PHP框架」已经开始连载,谢谢关注和支持!点击这里 阅读本文之前你需要掌握:PHP语法,面向对象 在完成整个软件项目开发的过程中,有时需要多人合作,有时也可以自己独立完成,不管是哪一种,随着代码量上升,写着写着就“失控”了,渐渐“丑陋接口,肮脏实现”,项目维护成本和难度上升,到了难以维持的 阅读全文
posted @ 2017-03-11 09:17 编程老头 阅读(8028) 评论(5) 推荐(0) 编辑
摘要: 最近在忙前端的工作,因为之前做.net和php的开发比较多,前端开发喜欢把库拿来就用,几次事实证明,不懂原理,连改代码也改不好,所以还是下定决心研究下JavaScript的几个技术难点。 0x1.JavaScript的对象和构造函数 定义一个JavaScript对象可以这么定义 这样,你就定义了一个 阅读全文
posted @ 2017-03-05 01:23 编程老头 阅读(412) 评论(0) 推荐(2) 编辑
摘要: 直接定义函数 使用Function构造函数 使用函数直接量 阅读全文
posted @ 2017-03-02 14:26 编程老头 阅读(598) 评论(0) 推荐(0) 编辑
摘要: 一旦用户(浏览器)发送了一个HTTP请求,我们的apache或者nginx一般都转到index.php,因此,之后的一系列步骤都是从index.php开始的,我们先来看一看这个文件代码。 作者在注释里谈了$kernel的作用,$kernel处理来访的请求,并且发送相应返回给用户浏览器。 这里又涉及到 阅读全文
posted @ 2017-02-12 18:59 编程老头 阅读(1075) 评论(0) 推荐(0) 编辑
摘要: 先谈一谈中间件的使用场景,比如路由转到一张页面,我们需要记录用户的cookie,或者检测用户的访问权限,这些操作如果全写在控制器里是不合适的,因为随着业务的扩充,控制器里的业务逻辑会越来越臃肿,难以维护,所以,不同的操作,我们分别写在各自的中间件里。我们使用artisan命令行来创建一个中间件。 阅读全文
posted @ 2017-02-11 17:06 编程老头 阅读(2234) 评论(0) 推荐(0) 编辑
摘要: 要查看代码,可以点击 或者转到链接:https://github.com/laravel/framework Laravel自动填充数据使用的是Seeder类 你自定义的Seeder只有一个run函数,里面写你的自动填充步骤 大家会注意到这两个函数 曾经对这两个函数非常疑惑,到底是干什么用的,只能推 阅读全文
posted @ 2017-02-11 01:19 编程老头 阅读(5636) 评论(0) 推荐(0) 编辑
摘要: 源码目录在\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Relations下 关系:一对多(One To Many) 场景:每篇博客都有若干条评论,每条评论只属于一篇博客 先定义两个Model,这里为了突出主要矛盾,删除了Mod 阅读全文
posted @ 2017-02-10 20:32 编程老头 阅读(809) 评论(0) 推荐(0) 编辑
摘要: 这里使用的是angular-1.0.1.min.js Angular的前端渲染 效果: 使用控制器读取JSON: 控制器代码: 效果: 你也可以自己定义一个控制器: 控制器实现: 效果: 阅读全文
posted @ 2017-02-06 20:28 编程老头 阅读(505) 评论(0) 推荐(0) 编辑
摘要: 命令行下运行 此时,redis服务已经开启,然后我们可以再新开一个命令行,作为控制台 阅读全文
posted @ 2017-02-01 10:30 编程老头 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 一.MVC 1.路由 2.控制器与视图 3.控制器与路由的绑定 4.表单提交 5.中间件 二.模式与数据库 1.数据库迁移 2.填充测试数据 3.ORM入门 4.分页 三.Laravel与设计模式 1.Laravel的生命周期 2.Laravel的目录结构(未完成) 3.控制反转IoC 4.服务容器 阅读全文
posted @ 2017-02-01 00:26 编程老头 阅读(274) 评论(0) 推荐(0) 编辑
摘要: Laravel使用的过程中,有些功能把前端页面的表达“写死了”,比如分页的翻页按钮! 当然你会说Laravel的Bootstrap样式也很好看啊,但是实际项目中,翻页按钮常常需要满足的客户的需要,特别在开发一款支持手机适配的Web APP,更是需要使用自定义的样式。 所以,学习一样东西不能一知半解, 阅读全文
posted @ 2017-01-31 23:56 编程老头 阅读(2531) 评论(0) 推荐(0) 编辑
摘要: 适用场景:记录文章浏览量 示例: Laravel目录\app\Events已经生成MyEvent.php文件 事件必须有监听者,我们先在\app\Providers目录下找到EventServiceProvider.php文件,该文件内有一个Events-Listeners数组来保存事件和监听者的映 阅读全文
posted @ 2017-01-31 17:48 编程老头 阅读(5651) 评论(0) 推荐(1) 编辑
摘要: artisan命令行创建migrate 格式: 示例: 我们找到laravel目录下database\migrations\2017_XX_XX_XXXXXX_create_books_table.php 注意:XX代表时间戳,因时而异 这里的CreateBooksTable类继承了Migratio 阅读全文
posted @ 2017-01-30 17:19 编程老头 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 控制器,rawSQL,Model controller.php 这里控制器给blade页面传递了一个数组,这个数组是直接通过数据库查询来的。 *.blade.php 阅读全文
posted @ 2017-01-22 20:00 编程老头 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 路由和控制器的关系 路由文件地址在\app\Http\routes.php,我们来看两种不同的路由。 以上均为绑定匿名函数的路由,虽然可以返回视图,也可以返回字符串,但本质都是一样的。 这两种是绑定控制器的路由,控制器类BlogController下有两个函数,index和showPost,可以调用 阅读全文
posted @ 2017-01-22 15:43 编程老头 阅读(509) 评论(0) 推荐(0) 编辑
摘要: Laravel安装,这里使用一键安装包。 使用PHP内置的Web服务器,在PHP文件夹下运行命令行 一.设置路由 路由文件在app\HTTP\routes.php,在代码中增加 我们观察到,这份PHP文件里已经有 因此,路由文件规定了URL转向哪一张视图。 Laravel加载好慢啊!主要是引用了谷歌 阅读全文
posted @ 2017-01-22 11:52 编程老头 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 数据集通常是长方形数据矩阵,行代表一个观察值,列代表一个变量,下表提供了一个假想的病人数据集 不同的规则有不同的数据集行列名称。数据统计把它们成为一个观察值和变量,数据库分析员把它们成为一条记录和域,数据挖掘和机器学习把它们成为一个样例和属性。我们将会在本书中用一个观察值和变量这个术语。 你可以分清 阅读全文
posted @ 2016-07-15 12:02 编程老头 阅读(498) 评论(0) 推荐(0) 编辑
摘要: ASP.NET提供三种框架来创建web应用:WebForms,ASP.NET MVC和ASP.NET WebPages。这三种框架都是稳定成熟的,你可以用任何一种方式开发一个很棒的web应用。不管你选择了哪个开发,你可以在任何地方体会到ASP.NET的便利和特性。 每个框架都针对不同的开发方式,你选 阅读全文
posted @ 2016-07-09 11:34 编程老头 阅读(972) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.yegor256.com/2016/06/27/singletons-must-die.html 因为有很多关于单例模式正在成为一个反模式的文章,我认为把单例模式说成是一个反模式是显而易见的。总之,问题往往是如何不用单例模式来定义一个全局变量,而这个问题的答案对许多人来说 阅读全文
posted @ 2016-07-09 10:14 编程老头 阅读(572) 评论(0) 推荐(0) 编辑