查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php开发lnmp

《西安--木木》-经历丰富了生活。 架构师QQ群: 246695517

 
 
 
 
 
 

陕西省 西安市

 发消息  写留言

 
职    业 高级软件工程师
专长技能专注软件架构、面向对象、设计模式、框架研究、深入OOP
兴趣爱好: 软件,看书,旅游,文学,上网,摄影,艺术,音乐
喜欢运动: 登山,旅行
QQ1211884772
E-Mail net08118@163.com
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

热门日志

 
 
数据列表加载中...
 
 
 
 
 

网易新闻资讯

 
 
 
 
新闻标题 
列表加载中...
 
 
 
 
 

天气

 
 
模块内容加载中...
 
 
 
 
 
 
 
圈子列表加载中...
 
 
 
 
 

精彩摄影作品

 
 
相片列表加载中...
 
 
 
 
 
 
 
 

将博客搬家至CSDN

2018-9-17 15:49:04 阅读17 评论0 172018/09 Sept17

将博客搬家至CSDN将博客搬家至CSDN

作者  | 2018-9-17 15:49:04 | 阅读(17) |评论(0) | 阅读全文>>

简单工厂模式

2018-3-12 15:03:21 阅读181 评论0 122018/03 Mar12

<?php

/**

* 工厂模式

*/

/**

定义:简单工厂模式,定义一个工厂类,它根据参数的不同返回不同类的实例,

被创建的实例通常具有共同的父类,简单工厂中用于创建实例的方法是静态的,

属性:工厂模式属于类创建型模式。

*/

abstract class Product{

protected $data=array();

// 强制要求子类定义这些方法

abstract protected function getData();

abstract protected function setData($name);

// 普通方法(非抽象方法)

public function printOut() {

print $this->getData() . "\r\n";

}

}

class NissanCar extends Product{

public function getData(){

return $this->data;

}

public function setData($name){

$this->data[]=$name;

作者  | 2018-3-12 15:03:21 | 阅读(181) |评论(0) | 阅读全文>>

代理模式

2018-3-12 15:00:07 阅读55 评论0 122018/03 Mar12

<?php

/**

* 代理模式

*

*/

class Proxy

{

private $server = '192.168.0.249';

private $port = '9999';

private $protocol = 'http';

private static $url = '';

private static $obj = null;

private function __construct()

{

}

/**

* @param $url 代理服务url

* @return null|Proxy

*/

public static function instance($url)

{

if (self::$obj ==null) {

self::$url = $url;

return new self($url);

}

return self::$obj;

}

/**

作者  | 2018-3-12 15:00:07 | 阅读(55) |评论(0) | 阅读全文>>

原型模式

2018-3-12 14:57:43 阅读52 评论0 122018/03 Mar12

<?php

/**

原型模式

*/

/**

定义:原型模式使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。

属性:原型模式属于对象创建型模式。

*/

//抽象原型类

interface Prototype{

public function shanllowCopy();

public function deepCopy();

}

//具体类

class ConcretePrototype implements Prototype{

public $name = 'yy';

private $attachment = null;

//浅拷贝

public function shanllowCopy(){

return clone $this;

}

//深拷贝

public function deepCopy(){

$serialize_obj = serialize($this);

$clone_obj = unserialize($serialize_obj);

return $clone_obj;

}

public function setAttachment($attachment)

作者  | 2018-3-12 14:57:43 | 阅读(52) |评论(0) | 阅读全文>>

观察着模式

2018-3-12 14:56:15 阅读58 评论0 122018/03 Mar12

<?php

/**

* 观察着模式

*/

/**

定义:对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动 更新。

思想:将实际扩展操作,降低到子类

应用:登录成功后,发送邮件、写入日志

*/

//主体接口

interface Observable

{

public function attach(Observer $observer);

public function detach(Observer $observer);

public function notify();

}

//主体

class Login implements Observable

{

private $observers = array();//注册观察者

public function attach(Observer $observer)

{

$this->observers[] = $observer;

}

public function detach(Observer $observer)

{

$new_observers = array();

作者  | 2018-3-12 14:56:15 | 阅读(58) |评论(0) | 阅读全文>>

工厂方法模式|多态工厂模式

2018-3-12 14:29:45 阅读57 评论0 122018/03 Mar12

<?php

/**

工厂方法模式|多态工厂模式

*/

/**

定义:工厂方法模式,先定义一个创建对象的接口,在子类中实例化类。

工厂方法模式让一个类的实例化延迟到子类。

属性:工厂方法模式属于类创建型模式。

备注:抽象类不能被实例化

*/

interface Product{

public function getData();

public function setData($name);

}

class NissanCar implements Product{

protected $data=array();

// 类中必须实现接口中定义的所有方法

public function getData(){

return $this->data;

}

public function setData($name,$key='like'){

$this->data[$key]=$name;

}

// 普通方法

public function printOut() {

print $this->getData() . "\r\n";

作者  | 2018-3-12 14:29:45 | 阅读(57) |评论(0) | 阅读全文>>

抽象工厂模式

2018-3-12 12:00:56 阅读38 评论0 122018/03 Mar12

php设计模式

<?php

/**

抽象工厂模式

*/

/**

定义:抽象工厂模式,先定义一个创建对象的接口,在子类中实例化类。

工厂方法模式让一个类的实例化延迟到子类。

属性:抽象工厂模式属于对象创建型模式。

备注:抽象类不能被实例化

*/

//抽象工厂

interface AbstractFactory{

public function chassis();//底盘

public function carBody();//车身

public function tyre();//轮胎

}

//nissan工厂

class NissanFactory implements AbstractFactory{

public function chassis(){

return new NissanChassis();

}

public function carBody(){

return new NissanCarBody();

}

public function tyre(){

return new NissanTyre();

}

}

//ford福特工厂

作者  | 2018-3-12 12:00:56 | 阅读(38) |评论(0) | 阅读全文>>

yii研发--深度分析yii2的原理

2017-6-22 17:38:20 阅读89 评论0 222017/06 June22

1,yii2的整体架构思想

2,yii2运行原理

作者  | 2017-6-22 17:38:20 | 阅读(89) |评论(0) | 阅读全文>>

php生成二维码

2017-6-8 15:42:31 阅读98 评论0 82017/06 June8

生成本文地址二维码!!!

1,引入php QRcode encoder 包中

phpqrcode.php文件

public function actionCreateCode()

{

$url = base64_decode($_GET['url']);

header('Content-Type: image/png');

ob_clean();

$level = 'L';//容错级别

$size = 4;//生成图片大小

QRcode::png($url, false, $level, $size);

}

作者  | 2017-6-8 15:42:31 | 阅读(98) |评论(0) | 阅读全文>>

php基础--密码强度判断

2017-5-4 10:46:25 阅读102 评论0 42017/05 May4

原理:正则表达式

/((^[0-9]{6,})|(^[a-z]{6,})|(^[A-Z]{6,}))$/ 弱密码

/((^[0-9,a-z]{6,})|(^[0-9,A-Z]{6,})|(^[a-z,A-Z]{6,}))$/  中密码

/^[\x21-\x7e,A-Za-z0-9]{6,}/   强密码

/**

* 检测密码强度

* @param string $pw 密码

* @return int

*/

function _checkPwLevel($pw){

if(empty($pw)){

return 0;

}

$pattern['weak'] = '/((^[0-9]{6,})|(^[a-z]{6,})|(^[A-Z]{6,}))$/';

$pattern['middle'] = '/((^[0-9,a-z]{6,})|(^[0-9,A-Z]{6,})|(^[a-z,A-Z]{6,}))$/';

$pattern['strong'] = '/^[\x21-\x7e,A-Za-z0-9]{6,}/';

$key ='';

foreach($pattern as $k=>$v){

$res = preg_match($v,$pw);

作者  | 2017-5-4 10:46:25 | 阅读(102) |评论(0) | 阅读全文>>

php简单工厂模式

2017-3-13 20:09:56 阅读92 评论0 132017/03 Mar13

<?php

/**

* 工厂模式

*/

/**

定义:简单工厂模式,定义一个工厂类,它根据参数的不同返回不同类的实例,

被创建的实例通常具有共同的父类,简单工厂中用于创建实例的方法是静态的,

属性:工厂模式属于类创建型模式。

*/

abstract class Product{

protected $data=array();

// 强制要求子类定义这些方法

abstract protected function getData();

abstract protected function setData($name);

// 普通方法(非抽象方法)

public function printOut() {

print $this->getData() . "\r\n";

}

}

class NissanCar extends Product{

public function getData(){

return $this->data;

}

public function setData($name){

$this->data[]=$name;

作者  | 2017-3-13 20:09:56 | 阅读(92) |评论(0) | 阅读全文>>

(安全)支付宝支付回调验证

2016-12-14 13:37:14 阅读185 评论0 142016/12 Dec14

1:支付宝安全验证(官方文档给出的说明)

1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,

2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),

3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email),

4、验证app_id是否为该商户本身。上述1、2、3、4有任何一个验证不通过,则表明本次通知是异常通知,务必忽略。在上述验证通过后商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。在支付宝的业务通知中,只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。

作者  | 2016-12-14 13:37:14 | 阅读(185) |评论(0) | 阅读全文>>

都是雨的错

2016-5-13 10:29:13 阅读72 评论0 132016/05 May13

2016.5.13  下着中雨。

大雨刷刷下,你的心儿在说话。

不知是大雨阻止了我的步伐,还是心儿阻挡了我的步伐。

作者  | 2016-5-13 10:29:13 | 阅读(72) |评论(0) | 阅读全文>>

所谓的成熟

2016-5-4 13:55:53 阅读56 评论0 42016/05 May4

人还是那些人,

路还是那条路,

城还是那座城,

却似曾相识,不远不近。

景还是那些景,

情还是那些情,

却似曾新识,不亲不疏。

心境已变,不痴,不嗔。

作者  | 2016-5-4 13:55:53 | 阅读(56) |评论(0) | 阅读全文>>

css3--弹性盒子模型布局

2016-4-22 10:19:01 阅读201 评论0 222016/04 Apr22

一 基本介绍

下面我们先来个样例,使用方式如下:

{ display:-webkit-box; display:-moz-box; display:box; }

貌似inline-box也可以。另外我们要注意浏览器间的私有属性兼容,这真是无奈的问题。为了简单,下面我只写webkit内和浏览器的写法。

当你把一个有效地html框标签设置该样式后,其内部的元素就将遵循和布局模式。你就可以定制你的盒模型具体展现形式了,下面介绍几个有用属性:

-webkit-box-orient

box-orient属性用于设置盒模型内部元素的排列方式,详细如下:

inline-axis:从左向右排列(默认值)horizontal:水平排列vertical:垂直排列block-axis:从上向下排列-webkit-box-sizing

box-sizing属性用于改变容器的盒模型组成方式

content-box: 此值维持css2.1盒模型的组成模式,border|padding|content {element width=border+padding+content}border-box: 此值改变css2.1盒模型组成模式,content|border|padding {element width=content}-webkit-box-direction

box-direction 属性用于改变容器的显示顺序,使之反向排列。默认的情况下,block 级元素是按照加载顺序从上到下排列,

作者  | 2016-4-22 10:19:01 | 阅读(201) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018

注册 登录  
 加关注