PHP 中的ClosureClosure,匿名函数,又称为Anonymous functions,是php5.3的时候引入的。匿名函数就是没有定义名字的函数。这点牢牢记住就能理解匿名函数的定义了。比如下面的代码function test() { return 100;};function testClosure(Closure $callback){ &nbs
php多进程处理往往我们会碰到一个情况,需要写一个脚本,这个脚本要处理的数据量极大,单进程处理脚本非常慢,那么这个时候就会想到使用多进程或者多线程的方式了。我习惯使用多进程的方式,php中使用多进程的时候需要使用pcntl,pcntl的使用可以看这个PHP的pcntl多进程但是这里有一个问题,一个主进程把任务分成n个部分,然后把任务分配给多个子进程,但是任务可能是有返回值的,所有的子进程处
<?php#多态abstract class tiger{ public abstract function climb();} class xtiger extends tiger{ public function climb(){ echo "摔下来;"; }}class mtiger exte
<?php//compact 将变量组合为数组$key_1 = "val_1";$key_2 = "val_2";$data = array('$key_3'=>'val_3','$key_4'=>'val_4');$arr_n =compact('key_1','key_2','data');ech
1、array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值。其中$arr 为输入数组,$callback($result , $value)接受两个参数,$result为上一次迭代产生的值,$value是当前迭代的值。使用array_reduce()替代foreach()循环最常用的
所需要的:jquery库,phpexcel插件,页面导出excel效果测试文件explode.php,excel导出功能实现文件exp.php和explode_excel.php,文件相关内容在此文下面:explode.php:测试页面内容:访问此页面后单击explode1与explode2能导出两种不同效果的excel,代码如下<!DOCTYPE html PUBLIC '-//W3C//
<?php//回调函数1 function demo($num,$n){ for($i<0;$i<$num;$i++){ if($n($i)) continue; echo $i."<br>"; } } function test1($i){ if($i%5 == 0) return TRUE; else return FALSE; }
背景:在最近的一个开发项目中,用户要先调用服务才能开始进行一系列的查询活动,想了好久,经同事提醒, 用回调函数即可解决该问题。在这里,对PHP下回调函数的原理及实现分别做一下讲解。1 什么是回调 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕
下面是总结的几个使用方法 include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include 'PHPExcel/Writer/Excel5.php'; 用于输出.xls的 创建一个excel $objPHPExc
<?php error_reporting(E_ALL); //开启错误set_time_limit(0); //脚本不超时 date_default_timezone_set('Europe/London'); //设置时间 /** Include path **/set_include_path
<?php// 无限级分类中,查家谱树 $area = array(0=>array('cat_id'=>1,'cat_name'=>'北京市','parent_id'=>0),1=>array('cat_id'=>2,'cat_name'=>'馆陶县','parent_id'=>5),2=>array('cat_id'=>3,'c
<?php/** * * @copyright 2007-2012 Xiaoqiang. * @author Xiaoqiang.Wu <jamblues@gmail.com> * @version 1.01 */ error_reporting(E_ALL); date_default_timezone_set('Asia/ShangHai'); /** PHPExcel_IO
跨站请求伪造(CSRF)是一种允许攻击者通过受害者发送任意HTTP请求的一类攻击方法。此处所指的受害者是一个不知情的同谋,所有的伪造请求都由他发起,而不是攻击者。这样,很你就很难确定哪些请求是属于跨站请求伪造攻击。事实上,如果没有对跨站请求伪造攻击进行特意防范的话,你的应用很有可能是有漏洞的。请看下面一个简单的应用,它允许用户购买钢笔或铅笔。界面上包含下面的表单:<form acti
、你的php.exe文件的路径,比如d:\php5.3\2、打开计算机右键 > 属性 > 高级系统设置 > 高级 > 环境变量3、在系统变量中找到Path看看有没有你的php路径,如果没有,则在Path中加入你的php路径,如:d:\php5.3\,保存即可4、在cmd命令行下进入到你的站点目录,直接输入文件名即可,如:D:\phpStudy\php53>php-cg
/* 1. 正则表达式就是描述字符串排列模式的一种自定义语法规则。* 2. 如果可以使用字符串处理函数完成的任务,就不要使用正则* 3. 有一些复杂的操作,只能使用正则完成。** 正则表达式可以在很多计算机语言中应用** 4. 正则表达式也称为一种模式表达式。* 5.正则表达式就是通过构建具有特定规则的模式,与输入的字符信息比较。再进行分割、匹配、查找、替换等工作** &n
数组是PHP的灵魂,非常强大,但有时候面向对象编程也是挺方便的,数组 与 对象 之间切换也是常有的事:/** * 数组 转 对象 * * @param array $arr 数组 * @return object */function array_to_object($arr) { if (gettype($arr) != 'array') { return; }
目前的工作是需要对用户的一些数据进行分析,每个用户都有若干条记录,每条记录中有用户的一个位置,是用经度和纬度表示的。还有一个给定的数据库,存储的是一些已知地点以及他们的经纬度,内有43W多条的数据。现在需要拿用户的经纬度和已知地点进行距离匹配,如果它们之间的距离小于一定的数据,比如说500米,就认为用户是在这个地点。MYSQL本身是支持空间索引的,但是在5.x的版本中,取消了对Distance()
PHP反射机制原理与用法详解<?phpclass person{public $name;public $gender;public function say(){echo $this->name," \tis ",$this->gender,"\r\n";}public function set($name, $value) {echo "Setting $name to $v
在阅读yii2源码的时候接触到了trait,就学习了一下,写下博客记录一下。 自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。 Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次
于的队列的介绍,我这里就不多讲了,随便百度一下都很多 用过laravel框架的童鞋都知道其自带队列功能,之前我很费解,PHP只是一个脚本,有超时机制 为什么能不停的去执行队列呢? 带着这个问题,在网上找了一下相关的介绍,这里我没有研究透laravel的队列,而且用这么高大上的实例来给大家讲,我估计自
PHP該如何達成動態建立物件的method呢?目前有兩種方式 : 使用PHP 5.0的overload : __call() 使用PHP 5.3的closure : __invoke() __call() class Foo { public function __call($method, $ar
接口特点汇总: 1、因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效;2、因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过程;3、有点接口需要用户登录才能访问;4、有点接口不需要用户登录就可访问; PHP Token(令牌) 针对以上特点,移动端与服务端
在完成整个软件项目开发的过程中,有时需要多人合作,有时也可以自己独立完成,不管是哪一种,随着代码量上升,写着写着就“失控”了,渐渐“丑陋接口,肮脏实现”,项目维护成本和难度上升,到了难以维持的程度,只有重构或者重新开发。第一重境界假设场景:我们需要写一个处理类,能够同时操作会话,数据库和文件系统。我们或许会这么写。境界特征:可以运行,但是严重耦合class DB{ public functi
php的api接口 在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道,请求的是什么,有可能是别人非法调用我们的接口,获取数据,因此就要使用安全验证。 验证原理 示意
首先在网站根目录下添加一个文件夹 比如Addons文件夹Addons/Article/Site.php在indexController控制器下执行(new Addons\article\site())->show()浏览器显示错误信息 那么怎么解决了?我们在composer.json里面添加autoload字段“autoload”:{"psr-4":{"Addons\\":"Add
一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数。最常用的就是回调函数的参数值。(http://php.net/manual/zh/functions.anonymous.php) &n
AOP: 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以
刚刚开始学Laravel就会接触到路由 Route::get('/', function () { return view('welcome');}); 后来笔者一本正经的去读过Route类的代码,惊讶的发现并没有get这个方法,之后了解到Laravel用了Facade模式。 Facade本质上是一
function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2) {$theta = $longitude1 - $longitude2;$miles = (sin(deg2rad($lati