![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
php
webmazha
这个作者很懒,什么都没留下…
展开
-
php 设计模式(抽象工厂)
abstract ApptEncoder { abstract function encoder();}class BloggsApptEncoder extends ApptEncoder{ function encoder() { return 'bapp'; }}class BloggsTtdEncoder extends ApptEn原创 2017-07-08 10:43:49 · 167 阅读 · 0 评论 -
php 设计模式使用场景分析
原创 2017-07-07 06:02:03 · 1036 阅读 · 0 评论 -
php 设计模式(代理模式)
use Base\Factory;//代理模式//使用场景比如,根据查询,或修改返回不同的数据库连接对象,和工厂模式配合使用,执行sql分发class Proxy{ /* * * 查询一行 * @$sql string 预处理sql * @$params array() 关联数组,或索引树组, * */原创 2017-07-07 05:53:21 · 294 阅读 · 0 评论 -
php 设计模式(工厂方法模式)
interface DB{ function connect();}class Mysql implements DB{ public function connect(){ echo 'mysql 连接成功'; }}class SqLit implements DB{ public function connect(){原创 2017-07-07 05:04:21 · 202 阅读 · 0 评论 -
责任链模式
class Board{ public $lev = 1; public $top = 'Admin';//他的上级 public function process($lev){ if($this->lev >= $lev){ echo '粗口'; } else { $a = new $this原创 2017-07-07 05:02:17 · 149 阅读 · 0 评论 -
PHP 设计模式(桥接模式)
//桥接模式//场景 论坛给用户发短信,站内,email或者手机号码;//interface mess{// public function send();//}////站内发送//class zh implements mess{// public function send(){// echo '站内发送';// }//}//class e原创 2017-07-07 05:01:01 · 190 阅读 · 0 评论 -
php系统内置的 观察者模式接口
//SplObserver 是系统内置的 观察者接口;class MyObserver1 implements SplObserver { //SplSubject 是系统内置的事件发生者接口 public function update(SplSubject $subject) { echo __CLASS__ . ' - ' . $subject->getNa原创 2017-07-07 01:48:21 · 343 阅读 · 0 评论 -
php的内置接口 arrayaccess
//ArrayAccess 是php内置的接口 可以把配置文件直接读出来class Config implements ArrayAccess{ protected $path; protected $config = [];//'offsetGet', 'offsetUnset', 'offsetExists', 'offsetSet'public function __原创 2017-07-03 00:22:36 · 267 阅读 · 0 评论 -
php 设计模式(组合模式一)
//组合模式abstract class Unit{ abstract function addUnit(Unit $unit); abstract function removeUnit(Unit $unit); abstract function bombardStrength();}class Army extends Unit{ public $uni原创 2017-07-10 07:46:24 · 171 阅读 · 0 评论 -
php设计模式(组合模式2)
//组合模式改进abstract class Unit{ function getComposite(){ return null; } abstract function bombardStrength();}abstract class CompositeUnit extends Unit{ protected $units = array原创 2017-07-10 07:48:30 · 236 阅读 · 0 评论 -
PHP 获取用户ip
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) { $ip = getenv("HTTP_CLIENT_IP");} else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_原创 2018-01-22 19:36:26 · 350 阅读 · 0 评论 -
php 好用的验证码类
<?phpnamespace App\Tool\Validate;//验证码类class ValidateCode{ private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子 private $code;//验证码 private $codelen = 4;//验原创 2017-08-14 01:27:54 · 804 阅读 · 0 评论 -
php 好用的日志类
/* * 记录信息到日志 * 思路 * 给定内容写入日志 * 如果内容大于1m备份并重新写否则继续写 * */class log{ const LOGFILE='curr.log';//建一个常量代表日志的名称 public static function write($cont){//写日志 $cont.="\r\n";原创 2017-08-14 01:23:50 · 768 阅读 · 0 评论 -
curl
public function index(){// $curl = curl_init('http://www.imooc.com/');// curl_exec($curl);//执行curl// curl_close($curl);//关闭句柄// $curlobj = curl_init();// curl_原创 2017-08-19 18:45:08 · 268 阅读 · 0 评论 -
lnmp环境搭建,及memcached安装
Memcached的编译在linux下需要gcc,make,cmake,autoconf,libtool等工具安装Yum install gcc make cmake autoconf libtool编译memcachedMemcached 编译安装需要libevent 在libevent官网下载,并编译安装在下载的libevent目录下执行./Configu原创 2017-04-02 19:12:46 · 1341 阅读 · 0 评论 -
php 简单ioc容器
interface SuperModuleInterface{ /** * 超能力激活方法 * * 任何一个超能力都得有该方法,并拥有一个参数 *@param array $target 针对目标,可以是一个或多个,自己或他人 */ public function activate(array $target);}class原创 2017-07-19 12:34:20 · 963 阅读 · 0 评论 -
php设计模式(迭代器模式)
/** * 1.迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素 * 2.相比于传统的编程模式,迭代器模式可以隐藏遍历元素的所需的操作 *//** * 迭代器需要实现系统内置的接口, * 并且实现接口的五个方法; * */class AllUser implements Iterator{//系统内置的接口 protected $ids; p原创 2017-07-02 01:03:20 · 153 阅读 · 0 评论 -
php 设计模式(装饰器模式和原型模式组合)
/** * 1.装饰器模式可以动态地 添加修改类的功能 * 2.1个类完成一个功能如果要修改添加额外的功能,传统的编程模式需要写一个子类继承他,并重新实现类的方法 * 3.使用装饰器模式,仅需在运行时添加-个装饰器对象即可实现,可以实现最大的灵活性 */interface DrawDecorator{ public function afterDraw(); public原创 2017-07-02 00:20:44 · 256 阅读 · 0 评论 -
php 设计模式 (原型模)
/** * 1.原型模式和工厂模式类似都是创建对象的 * 2.与工厂模式的实现不同,原型模式是实现创建一个原型对象然后通过clone原型对象来创建新的对象, * 这样就避免了类创建时重复的初始化工作 * 3.原型模式适用于大对象的创建,创建一个大对象需要很大的开销,如果每次new会消耗很大,原型模式仅需要 * 内存拷贝即可 */class Canvas//实例化会花费很大开销{原创 2017-07-01 23:23:09 · 166 阅读 · 0 评论 -
php 存储密码并加密
//设置cookiepublic function auth(){ cookie('user_id',$this->user_id); cookie('username',$this->username); cookie('ccode', encCookie($this->user_id,$this->username));}//收回权限revoke()public原创 2017-03-27 10:53:24 · 1427 阅读 · 0 评论 -
php分页类
class Page{ public $total=0;//数据总条数 public $key='page';//地址栏上传的get键 public $num=10;//每页默认是10条数据 public $curr=1;//当前页码 public $cnt=5;//表示一张页面显示几个页码 public function __construct(原创 2017-03-27 10:56:26 · 206 阅读 · 0 评论 -
php面包屑导航
public function getFamily($cat_id){//获取面包屑导航 $tree=array(); $cats=$this->cats; while($cat_id>0){ foreach($cats as $v){ if($v['cat_id']==$cat_id){ $tree原创 2017-03-27 10:42:48 · 844 阅读 · 0 评论 -
PHP无限级分类
public function getTree($parent_id=0,$lev=0){ $tree=[]; foreach($this->cats as $v){ if($v['parent_id']==$parent_id){ $v['lev']=$lev; $tree[]=$v; $t原创 2017-03-27 10:39:57 · 266 阅读 · 0 评论 -
session实现浏览历史记录
public function history($g){//判断session里有没有history $history=session('history');//此处用了tp框架 if(empty($history)){ $history=array(); }//取出重复浏览的商品只保留最新的 if( isset($history[$g['g原创 2017-03-27 10:31:56 · 1944 阅读 · 0 评论 -
php函数参数个数不确定问题解决方案
func_num_args:返回实参个数;func_get_arg:返回某一个实参,必须传进一个实参的索引(即func_num_args返回的数组中此时参的索引);func_get_args:返回实参组成的数组;栗子function add(){$args = func_get_args()print_r($args);}1.弊端当我们写一个原创 2017-03-25 18:00:18 · 3354 阅读 · 0 评论 -
php自动加载
class AutoLoad{static function setincludpath(){set_include_path(get_include_path().PATH_SEPARATOR."./lib/");//设置自动加载的文件夹set_include_path(get_include_path().PATH_SEPARATOR."./lib1/");set_include_pa原创 2017-03-25 17:51:24 · 224 阅读 · 0 评论 -
php获取用户ip地址,及格式转化存储
获取用户ip地址方法function getIp() { static $realip = NULL; if ($realip !== NULL) { return $realip;//判断静态变量是否为null } if (getenv('HTTP_X_FORWARDED_FOR')) { //用代理的ip原创 2017-03-25 17:26:58 · 248 阅读 · 0 评论 -
php简单的购物车
abstract class shopCart{ /** * 向购物车中添加1个商品 * @param $goods_id int 商品id * @param $goods_name String 商品名 * @param $shop_price float 价格 * @return boolean */ abstract原创 2017-03-27 13:22:07 · 609 阅读 · 0 评论 -
常用的curl工具类
class CurlUtils{ private $ch;//curl资源对象 /** * 构造方法 * @param string $url 请求的地址 * @param int $responseHeader 是否需要响应头信息 */ public function __construct($url,转载 2017-04-04 23:42:02 · 629 阅读 · 0 评论 -
tp的验证码的验证
function check_verify($code){ $Verify = new \Think\Verify(); return $Verify->check($code);}public function vcode(){ $Verify = new \Think\Verify(); $Verify->原创 2017-04-02 19:20:50 · 1340 阅读 · 0 评论 -
php 设计模式(观察者模式)
/** * 观察者模式 ,当一个对象发生改变时,依赖他的对象会收到通知并,并自动更新 * *//** * 使用场景 -个事件发生后,要执行一连串操作,传统的编程方式就是在事件的代码之后直接加入处理逻辑,当更新的逻辑增多之后 * 代码会变得难以维护,这种方式是耦合的,侵入式的,增加新的逻辑需要修改时间主题的代码;这时就需要观察者模式 *//** * 观察者模式实现了低耦合,非侵入式原创 2017-06-29 05:01:56 · 323 阅读 · 0 评论 -
php 设计模式(注册器模式+工厂模式+数据库映射模式,单例模式+工厂模式+注册器模式混合使用)
//适配器模式 可以将不同的函数接口封装成统一的api,比如mysqli和pdointerface Database{ public function connect($host, $name, $password, $db); public function query($sql); public function close();}class MYSQLI imp原创 2017-06-29 04:03:21 · 961 阅读 · 0 评论 -
php 设计模式(数据库对象模式)
/** * 数据对象映射莫使,就是将对象和数据存储映射起来,对一个对象的操作就是对数据库的操作 */interface Database{ public function connect($host, $name, $password, $db); public function query($sql); public function close();}clas原创 2017-06-29 03:07:09 · 352 阅读 · 0 评论 -
php 设计模式(策略模式)
/** * 策略模式是将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这就是策略模式 *//** * 电商类网站,针对男生和女生要跳到不同的商品类目,并且所有广告位展示不同的广告 * 代码中会出现if男生 if女生...硬编码 当需求改变时所有代码都需要改变,这种情况就需要使用 策略模式因为策略模式 * 跟上下文的环境是中立的没有依赖,实现解耦, */interface原创 2017-06-29 02:24:56 · 159 阅读 · 0 评论 -
php 模式(适配器模式)
<?php/** * Created by PhpStorm. * User: MR.L * Date: 2017/6/29 * Time: 1:27 *///适配器模式 可以将不同的函数接口封装成统一的api,比如mysqli和pdointerface Database{ public function connect($host, $name, $password, $原创 2017-06-29 01:48:30 · 298 阅读 · 0 评论 -
php 三种基础设计模式结合使用
<?php//单例模式class DB{ private static $db;//私有化禁止外部调用 final private function __construct(){ } //禁止被克隆 private function __clone(){//私有化禁止被克隆 } static function getInstance()原创 2017-06-29 01:01:18 · 217 阅读 · 0 评论 -
高可用高并发的商品秒杀
商城秒杀笔记(高可用高并发) 关键点高可用 双活高并发 负载均衡 安全过滤 设计思路静态页面 :cdn加速 网址隐藏 页面压缩 缓存机制动态页面:排队 异步 资质抢购 其他百度建议:opcode缓存、 cdn 、更大的服务实例 阿里建议: 云监控、 云盾 ecs oss rds cdn 架构构思原创 2017-04-23 01:06:42 · 1654 阅读 · 0 评论 -
php支付类
class Pay { //v_amount v_moneytype v_oid v_mid v_url key protected $v_amount; protected $v_oid; protected $v_moneytype = 'CNY'; protected $v_mid; protected $v_url;原创 2017-03-27 16:23:54 · 300 阅读 · 0 评论