PHP设计模式
适配器模式 适配器设计模式只是将某个对象的接口适配为另外一个对象所期望的接口 当添加新功能时,功能要求采用不同的方式使用现有的对象,而不是采用远行设计的方式,可以采用适配器模式构建另一个对象的方案。 同时,适配器设计模式也是针对数据源改变的优秀解决方案,常见有改变数据库引擎和第三方提供数据格式变化 关系说明 MyObject类包含一个名为 methodA()的公共方法。OriginalConsumer类获取MyObject的一个实例,并且在执行其doSomthing()函数期间调用methodA() 引入NewConsumer类。这个类的doSomthing( )函数在执行期间期望调用MyObject实例的一个公共方法: methodB() 通过扩展MyObject类创建MyObjectAdapterForNewConsumer类。像NewConsumer期望的样,新创建的类会提供名为methodB()的公共方法。在这个简单的示例中,所有methodB()都会调用methodA() 代码示例 类适配器模式(类适配器使用的是继承) 12345678910111213141...
Markdown添加目录
基于GitHub项目:https://github.com/ekalinin/github-markdown-toc 安装执行文件 123wget https://raw.githubusercontent.com/ekalinin/github-markdown-toc/master/gh-md-toc// curl -O https://raw.githubusercontent.com/ekalinin/github-markdown-toc/master/gh-md-tocchmod a+x gh-md-toc 生成目录输出到命令行 1234567891011./gh-md-toc ~/README.mdTable of Contents================= * [Dockerfile.vim](#dockerfilevim) * [Screenshot](#screenshot) * [Installation](#installation) * [OR using Pathogen:](#or-using-pathogen)...
Mac下的PHP版本切换
brew安装php-version1234567# brew install php56# brew install php70# brew install php-version# source $(brew --prefix php-version)/php-version.sh# php-version# php-version 5.6.5 php开机启动1234# mkdir -p ~/Library/LaunchAgents# cp /usr/local/opt/php56/homebrew.mxcl.php56.plist ~/Library/LaunchAgents/# launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php56.plist# launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.php56.plist 切换本机php版本123// 先确认phpinfo里面的php版本,先卸载5.6的plist,在加载7.1的plist# l...
管理PHP扩展配置
phpinfo 中 Scan this dir for additional .ini files 配置参数是php扩展配置路径。 你可以在该路径下,配置文件结尾为.ini的文件作为你的额外配置参数。 我们可以利用它来更好的管理我们php的扩展的相关配置: 引用pdo_pgsql扩展extension="/usr/local/opt/php71-pdo-pgsql/pdo_pgsql.so" PHP扩展安装 brew、yum或者apt-get安装 使用pecl安装 mac安装pecl 下载pecl curl -O https://pear.php.net/go-pear.phar 安装pecl 123456php -d detect_unicode=0 go-pear.phar执行以上命令后会进行安装过程,会有一些配置选项:输入 1,将安装根目录修改为 /usr/local/pear; 输入 4,将命令安装到 /usr/local/bin 目录; 回车两次,其他让其默认,安装完成 检测是否安装成功 pear version pecl安装扩展 ...
SQL字段拼接函数
GROUP_CONCAT()函数 GROUP_CONCAT函数返回一个字符串结果,该结果由分组中的值连接组合而成。 1select stylist_id,real_name,group_concat(is_show,m2_stylist_show_product.id,pic_url) as show_id_pic_url,max(is_show) as is_show CONCAT()函数 CONCAT()函数用于将多个字符串连接成一个字符串。 +号连接1select studentID+‘-’+studentName+'-'+studentScore AS studentInfo from student stuff() 将param1中自startIndex(SQL中都是从1开始,而非0)起,删除length个字符,然后用param2替换删掉的字符。 stuff(param1, startIndex, length, param2) 1select stuff((select '|'+studentName from stu...
PostgreSQL编写存储过程
基本结构123456789create or replace function somefunc() returns varchar as $$declare name varchar := 'wangzhen';begin return name;end $$ language plpgsql; $$作用 函数代码在function中实际上为一个字符串,代码1和代码2等价,但代码中字符串的单引号需要写两个进行转义。 12345678910-- 代码1create or replace function somefunc() returns varchar as $$declare name varchar := 'wangzhen';begin return name;end $$ language plpgsql; 12345678910--代码2create or replace function somefunc() returns varchar as 'declare nam...
PostgreSQL pgcrypto模块加密解密函数
pgcrypto 模块 加密后返回二进制的数据 加密解密函数 encrypt(data bytea, key bytea, type text) returns bytea decrypt(data bytea, key bytea, type text) returns bytea 例子: encrypt(data, 'fooz', 'bf-cbc/pad:pkcs') encrypt('this is a message', 'key', 'aes-ecb') decrypt('\x39c3c665757a0ff973b83fb98cc3d63f', 'key', 'aes-ecb') 类型转换 pgcrypto模块加密出来的二进制数据,转换成base64后与PHP加密的结果。 encode(data bytea, type text) decode(string text, type text) aes解密是自动识别...
lnmp环境搭建
CentOS6.51.查看环境1# cat /etc/redhat-release 2.关掉防火墙1# chkconfig iptables off 3.配置CentOS 6.0 第三方yum源123# wget http://www.atomicorp.com/installers/atomic# sh ./atomic# yum check-update 4.安装开发包和库文件1# yum -y install ntp make openssl openssl-devel pcre pcre-devel libpng libpng-devel libjpeg-6b libjpeg-devel-6b freetype freetype-devel gd gd-devel zlib zlib-devel gcc gcc-c++ libXpm libXpm-devel ncurses ncurses-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel imake autoconf automake screen sys...
ssh+git 建立代码库
1.生成ssh密钥123456789101112# ssh-keygen -t rsa [-f test -C "test key"]-b:指定密钥长度; -e:读取openssh的私钥或者公钥文件; -C:添加注释; -f:指定用来保存密钥的文件名; -i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥; -l:显示公钥文件的指纹数据; -N:提供一个新密语; -P:提供(旧)密语;-q:静默模式; -t:指定要创建的密钥类型。 密钥生成在.ssh文件夹里面,id_rsa为私钥,id_rsa.pub为公钥 2.生成裸git库1# sudo git init --bare sample.git 3.配置.ssh12345678910111213141516171819202122232425262728293031323334//服务器新建用户git,并配置权限# sudo adduser git# sudo chown -R git:git sample.git//修改/etc/passwdgit:x...
PHP面试基础整理
php类型转换 (int)$abc intvel($abc) settype($abc,”float”) php 闭包 类似匿名函数echo和print区别两者都不是函数,echo没有返回值,print只支持一个参数,print会返回true或false php数组函数 array_map() 把数组中的每个值发送到用户自定义函数,返回新的值 array_key_exists() 检查指定的键名是否存在于数组中 array_merge() 把一个或多个数组合并为一个数组。 array_walk() 对数组中的每个成员应用用户函数 array_filter() 用回调函数过滤数组中的元素。 array_reverse() 以相反的顺序返回数组。 in_array() 检查数组中是否存在指定的值。 sort() 对数组排序。 rsort() 对数组逆向排序。 array_unique() 删除数组中的重复值 extract() 数组(对数字索引数组无效)每对key和value,生成以key为变量名、value为对应值的多组新变量。 正则123456789101112131415...