分类目录归档:PHP脚本

php学习中所积累的经验,技巧.编程,思想是关键…

PHP设计模式之原型模式

原型模式与工厂模式作用相似,都是用来创建对象的;

与工厂模式的实现不同,原型模式是先创建一个对象,然后通过clone原型对象来创建新的对象,这样就免去了类创建时的重复初始化操作;

原型模式适合于大对象的创建,创建一个对象需要很大的开销,如果每次new就会消耗很大,原型模式仅需内存拷贝即可;

 

PHP设计模式之观察者模式

当一个对象发生改变时,依赖它的对象全部收到通知,并自动更新
场景:一个事件发生后,要执行一连串更新操作。传统的编程方法就是在事件的代码之后直接加入处理逻辑。当更新的逻辑增多之后,代码变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑要修改事件主体代码
观察者模式实现了低耦合,非侵入式的通知与更新机制

 

 

PHP设计模式之策略模式

策略模式是将一组特定的行为和算法封装成类,以适应某些特定的上下文环境
实际应用举例,假如有一个电商网站系统,针对男性女性用户要跳转到不同的赠品类目,并且所有广告位展示不同的广告

 

PHP设计模式之工厂模式、单例模式和注册模式

所有面向对象中最常见的三种设计模式分别是:工厂模式,单例模式,注册(器)模式

  1. 工厂模式,工厂方法或者类产生对象,百不是在代码中直接new
  2. 单例模式,使某个类的对象仅允许创建一个
  3. 注册模式,全局共享和交换对象

工厂模式factory.php

单例模式singleton.php

 

 工厂模式和单例结合使用

 

注册器类register.php

 

用PHP开发PSR-0框架之自动加载

使用PHP有一段时间,最近学习了一下rango讲的《大话PHP设计模式》,受益匪浅,于是将所学笔记记录在此,有兴趣的同学可以看一下。课程中开头讲到了自动加载,本文以后的章节都是以此自动加载为基础来展开的。

PSR-0面向对象开法规范,是PHP业界的一个规范

  1. 全部使用命名空间
  2. 所有PHP文件必须自动载入,不能有require/include
  3. 单一入口

入口文件index.php

 文件加载器LampBlog/Loader.php

 

用PHP调用Linux命令无权限的问题解决(visudo)

业务背景:  yourcmd为我的linux程序,它对权限要求非常严格,当用php去执行yourcmd程序

系统:CentOS 6.3

apache是php的执行用户

用exec函数去执行linux系统上的程序/usr/local/yourcmd/sbin/yourcmd

php代码如下

测试结果为没有权限
Array ( [0] => sudo: no tty present and no askpass program specified )

解决步骤:

1)注释以下行
#Defaults    requiretty

2)在文件末尾加入以下

最后测试结果
Array ( [0] => Warning: memory is too small: 1044725760 [1] => test configure is ok )

由导出sql语句导致错误感想

最近在维护项目过程当中根据新提的需求在某表加了几个字段,这必然要升级系统安装程序当中的sql语句,本来想是把这几个加的字段的修改语句放到sql文件当中。后来归鬼使神差的,想到把整个sql文件都更新(新导出一份sql文件)。

心里想现在这份sql文件是最全的。肯定万无一失。在这之后安装的时候就出现一个安装速度巨慢的问题。10多分才可以安成。最后经一个师兄指导。是我的sql文件有问题。之前的sql文件(旧)是用mysqldump导出的,现在的sql文件(新)是用navicat(一款mysql管理工具)导出的。这两者之间是有区别的。

mysqldump导出的文件:

navicat导出的文件:

把一个表当的所有记录做成一条sql语句来执行,后者是把每一条记录做成一条sql来执行,结果可想而知。当有一定的量的数据时效率就会非常明显。
记得以后导出sql文件一定要用mysqldump(或者专门处理sql语句的脚本)。来保证我们的程序正常运行。

这次小小而深刻的教训,让我想起来前几天看coolshell.cn上的一篇文章“「我只是认真」聊聊工匠情怀”,里面有一些话颇有感触。 继续阅读

php如何判断是否为json串(格式)

php如何判断是否为json串(格式),如果不是json则返回false

开发者必备,超实用的PHP代码片段!

本文分享了九个超级有用的PHP代码片段,当你在开发网站、应用或者博客时,利用这些代码能为你节省大量的时间。你可以直接拿来用!

一、查看邮件是否已被阅读

当你在发送邮件时,你或许很想知道该邮件是否被对方已阅读。这里有段非常有趣的代码片段能够显示对方IP地址记录阅读的实际日期和时间。

二、从网页中提取关键字

一段伟大的代码片段能够轻松的从网页中提取关键字。

三、查找页面上的所有链接

使用DOM,你可以轻松从任何页面上抓取链接,代码示例如下:

四、自动转换URL,跳转至超链接

在WordPress中,如果你想自动转换URL,跳转至超链接页面,你可以利用内置的函数make_clickable()执行此操作。如果你想基于WordPress之外操作该程序,那么你可以参考wp-includes/formatting.php源代码。

五、创建数据URL

六、从服务器上下载&保存一个远程图片

当你在搭建网站时,从远程服务器下载某张图片并且将其保存在自己的服务器上,这一操作会经常用到。代码如下:

七、移除Remove Microsoft Word HTML Tag

当你使用Microsoft Word会创建许多Tag,比如font,span,style,class等。这些标签对于Word本身而言是非常有用的,但是当你从Word粘贴至网页时,你会发现很多无用的Tag。因此,下面的这段代码可帮助你删除所有无用的Word HTML Tag。

八、检测浏览器语言

如果你的网站上有多种语言,那么可以使用这段代码作为默认的语言来检测浏览器语言。该段代码将返回浏览器客户端使用的初始语言。

九、显示Facebook 粉丝数量

如果你的网站或者博客上有内链的Facebook页面,你或许想知道拥有多少粉丝。这段代码将帮助你查看Facebook粉丝数,记住,别忘了在你的页面ID第二行添加该段代码。

和php中date()函数结缘,date()的相关用法

昨天写的接口放在线上测试,今天早上来公司发现数据对不上.

php中因date函数犯的错

 

201308282300输出的结果:
2013082923
2013082911

201308282400输出的结果:
2013082900
2013082912

关键就在这个小时函数的h(小写)和H(大写)
小写的范围01-12
大写的范围00-23

上一月的第一天和最后一天,

更多用法,请移步 php中时间相关处理