201503-26 PHP中通过Hashids将整数转化为唯一字符串 需要在前台隐藏ID的话,可以考虑使用此产品,生成的id比较高大上,比较像Youtube、Youku、Weibo之类的id名,比如:XNjkxMTc0MDQ4官网:http://hashids.org/php/Laravel5包:https://github.com/vinkla/hashidsPHP中的简单实用示例:$hashids=newHashids\Hashids('thisismysalt');$id=$hashids->encode(1,2,3);$numbers=$hashids->decode($id);当然,包很全,还有Composerpackage、Laravel4package... 继续阅读 >
201503-26 常用设计模式之迭代器模式及其PHP实现(Yii框架) 迭代器模式是一种行为型模式,它是一种最简单也最常见的设计模式。它可以让使用者透过特定的接口巡访容器中的每一个元素而不用了解底层的实际操作。适用性在希望利用语言本身的遍历函数便利自定义结构时,例如PHP中的foreach函数类图PHP实例<?phpclasssampleimplementsIterator{private$_items;publicfunction__construct(&$data){$this->_items=$data;}publicfunctioncurrent(){... 继续阅读 >
201503-26 常用设计模式之备忘录模式及其PHP实现 备忘录模式是一种行为型模式,它在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样可以在以后把该对象的状态恢复到之前保存的状态。主要角色备忘录(Memento)角色:存储发起人(Originator)对象的内部状态,而发起人根据需要决定备忘录存储发起人的哪些内部状态。备忘录可以保护其内容不被发起人(Originator)对象之外的任何对象所读取。发起人(Originator)角色:创建一个含有当前的内部状... 继续阅读 >
201503-26 常用设计模式之抽象工厂模式及其PHP实现 抽象工厂模式是一种创建型模式,它提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。它的实质是“提供接口,创建一系列相关或独立的对象,而不指定这些对象的具体类”。抽象工厂模式提供一个创建一系统相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式中主要角色抽象工厂(AbstractFactory)角色:它声明创建抽象产品对象的接口具体工厂(ConcreteFactory)角色:实现创建产品对象的操作... 继续阅读 >
201503-26 常用设计模式之状态模式及其PHP实现 状态模式是一种行为型模式,它允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类,状态模式变化的位置在于对象的状态。主要角色抽象状态(State)角色:定义一个接口,用以封装环境对象的一个特定的状态所对应的行为具体状态(ConcreteState)角色:每一个具体状态类都实现了环境(Context)的一个状态所对应的行为环境(Context)角色:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。... 继续阅读 >
201503-26 程序员讨厌没有价值的任务 寻找其工作的价值这些年来,我看到很多颇有成绩的软件开发人员转行去了管理岗位,或者其他完全不同的职业。有的时候原因很简单,只是想拿更高的薪水。不过也有因为是厌倦了总是需要不断学习以跟上软件开发步伐这样一种疲于奔命的状态。当然最常见的原因是感到无聊了,或者是对工作本身失去了兴趣。这些人通常是因为工作对于他们而言已经没有了足够的挑战,认为他们是在将自己的时间和精力投入到几乎没有价值的工作中。我的软件开... 继续阅读 >
201503-26 常用设计模式之模板方法模式及其PHP实现 模板方法模式模式是一种行为型模式,它定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以在不改变一个算法的结构的情况下重定义该算法的某些特定的步骤。主要角色抽象模板(AbstractClass)角色定义一个或多个抽象方法让子类实现。这些抽象方法叫做基本操作,它们是顶级逻辑的组成部分。定义一个模板方法。这个模板方法一般是一个具体方法,它给出顶级逻辑的骨架,而逻辑的组成步骤在对应... 继续阅读 >
201503-26 聊聊设计师成长的四个阶段 在成长的过程中,我时常会感到茫然,感觉遇到瓶颈,然而突破后又觉得能力得到跨越式的提升。但一想到从未经历过的未来,又会感到茫然,不知道该走向 哪里。如果当我是一个初学者的时候,能看到前辈分享的成长经历,是否会少走弯路呢?最近恰好对过去和未来有了新的思考,希望能以过来人的身份分享给后面的 人。第一个阶段:照猫画虎这个阶段的关键词,是“入门”。初入门的新人,往往还没有获得成体系的方法论,即使之... 继续阅读 >
201503-26 常用设计模式之责任链模式及其PHP实现 责任链模式是一种行为型模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。主要角色抽象责任(Responsibility)角色:定义所有责任支持的公共方法。具体责任(ConcreteResponsibility)角色:以抽象责任接口实现的具体责任责任链(Chainofresponsibil... 继续阅读 >
201503-26 PHP常用正则表达式大全 表单验证匹配验证账号,字母开头,允许5-16字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$验证账号,不能为空,不能有空格,只能是英文字母:^\S+[a-zA-Z]$验证账号,不能有空格,不能非数字:^\d+$验证用户密码,以字母开头,长度在6-18之间:^[a-zA-Z]\w{5,17}$验证是否含有^%&',;=?$\等字符:[^%&',;=?$\x22]+匹配Email地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配腾讯QQ号:[1-9][0-9]{4,}匹配... 继续阅读 >
201503-26 如何使用 Xdebug + Sublime Text 3 调试 PHP 代码 Xdebug是php调试的好帮手,sublime是php编写的好帮手。这里只说如何配置,默认读者会用sublimetext和Xdebug安装XdebugUbuntu下安装:Ubuntu 12.04下安装配置PHP调试工具XdebugWindows下安装:PHP调试利器Xdebug的安装与使用——Xdebug的简单介绍在PHP配置文件phpl.ini中xdebug需要开启remote_enable:xdebug.remote_enable=on否则XdebugClient就不能正常工作。配置SublimeText要调试某一个项目,首先得把这个项目在s... 继续阅读 >
201503-26 PHP中使用Session令牌防止Ajax表单重复提交 防止表单重复提交主要有两种方式:1)通过重定向(非Ajax表单提交)2)通过SessionToken(Session令牌)当客户端请求页面时,服务器会生成一个随机数,并且将该随机数放置到session当中,然后将该随机数发向客户端;如果客户第一次提交,那么会将该随机数发往服务器端,服务器会接收到该随机数并且与session中所保存的随机数进行比较,这时两者的值是相同的,服务器认为是第一次提交,并且将更新服务器端的这个随机数值;如... 继续阅读 >
201503-17 PHP 验证登陆类 用法/* * 例子 * * $Auth=newAuth(); * $Auth->login("123@123.com","123"); * $Auth->logout(); * echo$r->init(); ***/<?php /* * *@ID: 验证登陆类 * *@class: Auth.class.php * *@auther: 欣儿&nbs... 继续阅读 >
201503-14 PHP初学者的困惑的10个知识点 【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到。当然也可以修改自动全局变量为开(php.ini改为register_globals=On);考虑到兼容性,还是强迫自己熟悉新的写法比较好。注:PHP中的超全局变量从PHP 4.2.0 开始,register_globals 的默认值为 off,这样一来,以前的很... 继续阅读 >
201502-27 微信红包的算法实现探讨(基于PHP) 今晚突发奇想给校友微信群发了红包,我设定红包总额为10元,支持28个人随机领取。于是一个有趣的结果出现了:A领取了0.26元B领取了0.29元C领取了0.02元D领取了0.56元E领取了0.64元……微信是采用什么样的算法做到的?简单百度了下,目前尚未有官方的说明,仅仅在知乎里有一个较为热门的讨论,链接戳这里,不过他们讨论的太过于深入,有掉坑之嫌。我按照自己的逻辑尝试了下,这个算法需要满足以下几点要求:1、每个... 继续阅读 >
201502-13 PHP开发者应了解的24个超酷的PHP库(微框架) 作为一个PHP开发者,现在是一个令人激动的时刻。每天有许许多多有用的库分发出来,在Github上很容易发现和使用这些库。下面是我曾经遇到过最酷的24个库。你最喜欢的库没有在这个列表里面?那就在评论中分享吧!1.Dispatch–微框架Dispatch是一个PHP小框架。它并没有给你完整的MVC设置,但你可以定义URL规则和方法,以便更好组织应用程序。这对API、简单的站点或原型来说是完美的。//包含库include'dispatch.php';//定义你... 继续阅读 >