php
文章平均质量分 62
ivhong
时代脉搏,趣味横生,互联互往,动力无穷
展开
-
php模式之装饰器模式2
原文来自(大胖博客)在上一篇文章中,介绍了如何在代码架构之初,为了以后的扩展方便做的考虑,那么在现实中大部分的情况不是如此,那么我们需要重构这块么?不一定,今天我们使用另一种方式来实现装饰器。假设现在我们处在产品的第二个阶段,有下面第一阶段代码来实现需求[php]class User{ function loadData(){ $res = 'load ...' ...原创 2019-11-28 11:27:54 · 241 阅读 · 0 评论 -
php 判断当前脚本的运行方式
$a = php_sapi_name();$iscli = $a == 'cli';原创 2015-03-02 17:12:05 · 809 阅读 · 0 评论 -
php cli 等待用户输入方法
function read(){ $fp = fopen('/dev/stdin', 'r'); $input = fgets($fp, 255); fclose($fp); $input = chop($input); return $input;}转载 2015-06-18 13:05:44 · 3655 阅读 · 1 评论 -
php autoload 加载函数
<?php$addpath = array( '/path1/', '/path2/', '/path3/',);foreach ($addpath as $value) { $a .= ':' . __DIR__ . $value;}set_include_path(get_include_path() . $a);spl_autoload_regis原创 2015-06-04 10:54:04 · 578 阅读 · 0 评论 -
svn 小版本上线前必须检测流程
1. 确定要上线的版本 2. 确定上一次上线的版本 3. svndiff(该shell命令可以在我的资源中查找) 出版本差异文件4. 通过 svn 自带命令 svn diff 检测每个要上传的代码的实际差异情况,确认是否有非上线代码5. 确认上述步骤处理完后再备份线上代码(虽然已经反复确认,但是确保万无一失)6. 上线差异文件7. 及时检测上线后的代码是否符合预期功能原创 2015-12-15 11:09:25 · 890 阅读 · 0 评论 -
php 服务器端主动发数据到客户端解决办法
1. 在客户端使用隐藏 iframe,其src指向服务器端的控制代码,比如 server.php2. 在server.php 通过 while 实现永不结束的请求,在循环内,实现断点,比如 sleep(2),表示每2秒钟循环一次3.在每次循环中输出片段代码到客户端echo “parent.$('#list').append('xxxxxxxxx')";ob_flush();原创 2016-01-20 18:04:26 · 2962 阅读 · 1 评论 -
php 实现 redis 队列,等待有新消息入列
1. 消息入列代码, t1.php:$redis = new Redis();$redis->connect('127.0.0.1', 6379);while(1){ try{ $value = "value_".time(); $redis->LPUSH('key1', $value);原创 2016-01-20 18:52:15 · 4831 阅读 · 0 评论 -
过滤utf8 字符中超过三个字节的字符,或者非utf8字符
function filterUtf8($str) { /*utf8 编码表: * Unicode符号范围 | UTF-8编码方式 * u0000 0000 - u0000 007F | 0xxxxxxx * u0000 0080 - u0000 07FF | 110xxxxx 10xxxxxx转载 2016-02-15 19:01:17 · 4861 阅读 · 0 评论 -
yii 随笔(一):初始化环境
1. 下载高级模板包(我选择的是解压安装)http://www.yiiframework.com/download/2. 解压安装包(我下载的是https://github.com/yiisoft/yii2/releases/download/2.0.6/yii-advanced-app-2.0.6.tgz),到 webroot/advanced3. 进到原创 2016-01-14 19:15:55 · 1063 阅读 · 0 评论 -
yii 随笔(二):创建第一个用户
1. 进入到 webroot/advanced (yii安装目录)2. 配置数据库3. 执行 yii migrate 命令(migrate命令是yii自带的数据库转移工具,可对数据库进行备份升级等操作)该命令执行的数据文件是:该命令的执行主体文件是:4. 现在有了现在数据库里有了 user表,现在建立一个可登陆的用户5. 用命令行创建passwo原创 2016-01-14 19:31:56 · 1390 阅读 · 0 评论 -
yii随笔(三) 开启友好路径
概述:实现 localhost/site/login 访问 localhost/index.php?r=site/login1. web server 配置 a. nginx 配置 location / { try_files $uri $uri/ /index.php?$args; } b. apache 配原创 2016-01-18 19:09:36 · 471 阅读 · 0 评论 -
yii2 随笔(六)利用事件触发修改请求参
yii2 可以使用事件机制来触发特殊的处理,实现了代码扩展,可以理解为在yii2内核层已经埋下了隐藏的“钩子”,用于后期扩展,比如 yii\base\application::run() 方法就埋下了两个“钩子”// yii\base\Applicationpublic function run() { try { $this->stat原创 2016-03-23 20:27:14 · 3918 阅读 · 0 评论 -
php isset 和 array_key_exists 检查数组中是否存在某值的区别
原文地址:http://ivhong.com/?p=110 http://ivhong.com/?p=110(ivhong.com 是我的博客主址)先看看下面这段代码,你觉得结果是什么呢?//定义一个数组, > 5.4$arr = ['a' => null];var_dump(isset($arr), array_key_exists('a', $arr));原创 2016-03-25 15:43:48 · 2146 阅读 · 1 评论 -
yii2 随笔(七)依赖注入——(1)什么是依赖注入
原文地址:http://ivhong.com/?p=112(ivhong.com 是我的博客主址)在学yii2之前,就已经知道了“依赖注入”的这个名词,也尝试了解过,但是都是一直云里雾里的,可能是一直没有机会真实的使用过,所以了解的不太彻底,这次学习yii2顺便把这个所谓“高大上”给搞定!!!哈哈在开始“依赖注入”之前,我们先说说设计模式,我觉的从这方面入手可能理解的更快一些。原创 2016-03-28 17:09:47 · 681 阅读 · 0 评论 -
yii2 随笔(七)依赖注入——(2)php依赖注入的简单实现
原文地址:http://ivhong.com/?p=115(ivhong.com 是我的博客主址)前面我们知道了问题所在,那么PHP是怎么解决这个办法的呢?因为是yii2,所以我们用yii2的方式简单介绍一下,我把yii2的核心代码整合了一下,来说php实现依赖注入的过程。在使用过yii2开发的同学,对Yii::createObject不陌生,他就是依赖注入的一个“入口”,我把它提出来原创 2016-03-28 17:14:17 · 1170 阅读 · 0 评论 -
yii2 随笔(七)依赖注入——(3)yii2的依赖注入
原文地址:http://ivhong.com/?p=124(ivhong.com 是我的博客主址)yii2的依赖注入的核心代码在 yii\di,在这个包(文件夹)下面有3个文件,分别是Container.php(容器),Instance.php(实例),ServiceLocator(服务定位器),现在我们讨论一下前两个,服务定位器可以理解一个服务的注册表,这个不影响我们讨论依赖注入,它也是原创 2016-03-28 17:20:33 · 1917 阅读 · 1 评论 -
yii2 随笔(七)依赖注入——(4)服务定位器
原文地址:http://ivhong.com/?p=135(ivhong.com 是我的博客主址)服务定位器定位器是依赖注入的一种解决方式,它包含依赖注入,在解决了依赖注入后,如果服务使用者和服务提供者不是用一个人,那么使用者要了解提供服务的必须参数,这样才能保证依赖的正确性,这就耦合了使用者和提供者,服务定位器就是解耦这部分的,服务提供者在 ServiceLocator 中注册服务(同时原创 2016-03-28 17:24:12 · 933 阅读 · 0 评论 -
php 导入csv文件
if (($handle = fopen($tmpname, 'r')) !== FALSE) { while (($data = fgetcsv($handle, 0, ",")) !== FALSE) { $isempty = true; array_walk($data, function(&$a)use原创 2016-12-08 16:50:41 · 479 阅读 · 0 评论 -
php 写shell脚本
比如说写一个 test 的php脚本:1.在命令行下写执行 ./test 参数1 参数22.脚本内容如下#!/usr/bin/php -q //php 解析器$参数 = array_slice($argv, 1);//$参数 = array('参数1‘, '参数2');原创 2014-03-17 14:47:12 · 1319 阅读 · 0 评论 -
php 接收 shell 返回的结果后,中文乱码的解决办法
如果需要php执行一些shell命令,查看显示结果的话,如果shell输出的有中文,则php得到的中文返回结果可能类似是 “?\230?\180?\187?\229?\138?\168” 的字符串。那么需要这个函数转译:function shell2txt($a){ $ary = explode('/', $a); foreach($ary as $k => $v){原创 2014-01-23 10:18:44 · 2362 阅读 · 0 评论 -
计算某个文件夹所占的磁盘空间大小
/* *@dirPath 被查询目录的全路径 *@storage 保存文件所占磁盘大小的变量 * * eg:$storage = dirStorage('/var/www/user');//查看/var/www/user 文件夹所占的大小 */function dirStorage( $dirPath ){ $dir = opendir($dirPath); while原创 2013-03-28 14:03:19 · 1029 阅读 · 0 评论 -
认识php对象
class a{ static $s = 0; var $v = 1; function f(){ echo 'sss'; } function f1(){ $this->f(); } function f2(){ self::f(); }}1.$s 是类 a 里的静态属性. 这个原创 2013-03-28 14:12:31 · 556 阅读 · 0 评论 -
php 备份mysql数据库(joomla数据库可直接使用,其他数据库稍作修改即可)
<?phprequire_once('configuration.php');$jconfig = new JConfig();$connect = mysql_connect($jconfig->host ,$jconfig->user, $jconfig->password);$result = mysql_list_tables($jconfig->db); $tables = a原创 2013-04-07 10:58:01 · 780 阅读 · 0 评论 -
php utf8 截取字符串(支持中文)
function subString($str, $start, $length=0) { //整个字符串的长度 $len = stringLen($str); $i = 0;//字符串编码的偏移量 //完整排除之前的UTF8字符 $pre = 0;//字符串的偏移量 while($i < strlen($str) && $pre < $start ) { $ord = ord(原创 2013-03-27 17:38:37 · 973 阅读 · 0 评论 -
php 中 str_replace或者preg_replace对php代码的性能的影响
str_replace或者preg_replace对php代码的性能的影响,如下:$str = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,原创 2013-03-27 17:31:04 · 918 阅读 · 0 评论 -
数猴子小程序(面向对象版)
/** *程序的实现逻辑是让猴子从队列头按顺序到指定地点报名,如果猴子安全返回则把它放到队尾。直至到最后一个。 *程序分为3个部分:猴子的寄存器、计算器、适配器。 * 1.猴子的寄存器 * 属性: a.猴子队列 * b.计算器,猴子报名的计算器 * c.报名单位,猴子报名的具体位置。 * 功能: 按需组织猴子队列,并安排猴子从队列头开始按顺序到指定地点参加原创 2013-03-28 14:04:13 · 727 阅读 · 0 评论 -
数猴子的小程序(面向过程版)
/* *一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去, *直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程最新的新浪PHP面试题模拟此过程,输入m、n, 输出最后那个大王的编号。 * *此函数的原理是 比如:array(1=>1,2=>2,3=>3); 要数每当2原创 2013-03-28 14:04:54 · 695 阅读 · 0 评论 -
php中文字符编码的长度,以及设置得到当前(内部)编码的函数
1.gbk 每个中文占1.5个字符,当有单个字的时候,独自占两个字符的位置echo mb_strlen("哈哈", 'gbk');//输出3echo mb_strlen("哈哈哈哈", 'gbk');//输出6echo mb_strlen("哈哈哈", 'gbk');//输出4echo mb_strlen("哈", 'gbk');//输出22.gb2312 每个中文占2个字符,当原创 2013-03-28 14:08:37 · 652 阅读 · 0 评论 -
file mime 类型表
array( 'chm'=>'application/octet-stream', 'ppt'=>'application/vnd.ms-powerpoint', 'xls'=>'application/vnd.ms-excel', 'doc'=>'application/msword', 'exe'=>'appli转载 2013-03-28 14:21:42 · 1349 阅读 · 0 评论 -
php计算月份差
/* *取某个日期到现在时间的月份差值。如果不够一个月,按一个月算 */function diffMonth($date){ if(strtotime($date) < time() ){ $start = $date; $end = date('Y-n-j'); }else{原创 2013-03-28 14:01:45 · 1566 阅读 · 0 评论 -
禁止浏览器缓存
HTML: PHP header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");header("Cache-Control: no-store, must-revalidate");header("Pragma: no-cache"); JSP: response.addHeader("Cache-Control", "no转载 2013-03-28 14:07:04 · 673 阅读 · 0 评论 -
share buttons(google+,facebook,twitter,pinterest,linkedin)
$url = site_url() . $_SERVER["REQUEST_URI"]; $save_url = urlencode($url); //https://developers.google.com/+/ //https://developers.facebook.com/docs/web/ //https://dev.twitter.com/docs/tweet-button原创 2013-06-06 13:20:34 · 3319 阅读 · 0 评论 -
判断是否是AJAX调用
function isAjax() { return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'); }原创 2013-08-28 13:50:25 · 880 阅读 · 0 评论 -
判断客户端是否是手机
function is_mobile(){ $regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|"; $regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolP转载 2013-03-28 06:01:11 · 800 阅读 · 0 评论 -
php 得到 上/下/当前 星期几的时间的函数
//的到下个周2的时间:get_next_of_the_week(2);function get_next_of_the_week($oftheweek){ $today = date('w'); $today = $today == 0 ? 7 : $today; $date = strtotime( date('Y-m-d', strtotime( '+'. (7 + $ofth原创 2013-12-16 10:18:23 · 1299 阅读 · 0 评论 -
天气预报集成函数
/** * Weather * * @package Weather * @author 王长宏 * @link http://blog.csdn.net/wang350 */// ------------------------------------------------------------------------/** * * 调用方法 * $weat原创 2014-01-08 16:45:24 · 4682 阅读 · 0 评论 -
php 截取字符串 解决html实体的问题
$str = '启动开展“96156——';//如果你的编码格式不是ISO-8859-1”的话第三个参数一定不能省,这个参数就是当前的编码格式,http://www.w3school.com.cn/php/func_string_html_entity_decode.asp$str = html_entity_decode($str, ENT_QUOTES,原创 2014-01-08 21:14:27 · 920 阅读 · 0 评论 -
php按照单词截取子串
转自:http://hi.baidu.com/hiosiao/blog/item/f90e7fe7363ff128b83820b3.htmlfunction subwords($words,$num){//从 $words 字符串中 截取前 $num 个单词// functioned by PHP designer Hiosiao, $total_num =转载 2013-03-28 14:02:41 · 832 阅读 · 0 评论