当前位置: 首页 > news >正文

站长统计芭乐官方网站下载/软文网站有哪些

站长统计芭乐官方网站下载,软文网站有哪些,专门做资产负债表结构分析的网站,桂林户外论坛PHP 像 JavaScript 一样,很方便使用回调函数,函数名就像一个普通的变量名一样可作为其他函数的参数,即成为一个让宿主函数调用的回调函数。但回调函数的用法依据回调函数是否是全局函数还是一个类中的函数是有区别的。比如 PHP 的preg_replac…

PHP 像 JavaScript 一样,很方便使用回调函数,函数名就像一个普通的变量名一样可作为其他函数的参数,即成为一个让宿主函数调用的回调函数。但回调函数的用法依据回调函数是否是全局函数还是一个类中的函数是有区别的。比如 PHP 的preg_replace_callback — 用回调函数执行正则表达式的搜索和替换函数可以接受一个回调函数,我们来看这种区别。

如果是全局的回调函数,那容易,只要写上函数名作为字符串的形式传入就行的,看:

/**@author Unmi*/

function inverse($matches) {

return $matches[2].":".$matches[1];

}

$text = preg_replace_callback ("/(\d{7}):(.+)/", 'inverse' , '1125535:fantasia@sina.com');

echo $text;    //Output result: fantasia@sina.com:1125535

1

2

3

4

5

6

7

/**@author Unmi*/

functioninverse($matches){

return$matches[2].":".$matches[1];

}

$text=preg_replace_callback("/(\d{7}):(.+)/",'inverse','1125535:fantasia@sina.com');

echo$text;   //Output result: fantasia@sina.com:1125535

而如果 preg_replace_callback 函数是在类成员函数中被调用,同时 inverse 回调函数也是该类的成员函数,写法就不一样了。要是仍然写成下面这种方式的话:

/**@author Unmi*/

class ReplaceClass{

function inverse($matches) {

return $matches[2].':'.$matches[1];

}

function replace($src_str){

$text = preg_replace_callback ("/(.+?):(.+)/", 'inverse', $src_str);

return $text;

}

}

$rc = new ReplaceClass();

echo $rc->replace('Unmi:fantasia@sina.com');

1

2

3

4

5

6

7

8

9

10

11

12

13

14

/**@author Unmi*/

classReplaceClass{

functioninverse($matches){

return$matches[2].':'.$matches[1];

}

functionreplace($src_str){

$text=preg_replace_callback("/(.+?):(.+)/",'inverse',$src_str);

return$text;

}

}

$rc=newReplaceClass();

echo$rc->replace('Unmi:fantasia@sina.com');

你将会被提示:Warning: preg_replace_callback(): Requires argument 2, 'inverse', to be a valid callback,也就是找不到类里的这个 inverse() 方法,除非在类外部有一个全局的 inverse() 方法。但总是存在把回调函数写到类里的必要性的,这时候必须清楚的指明这个回调函数是属于哪个类或是实例的。

PHP 像 C++  一样的方式指写类成员函数,如果给 ReplaceClass 类的 inverse() 函数加个 static 关键字,是否能用

$text = preg_replace_callback("/(.+?):(.+)/", 'ReplaceClass::inverse', $src_str) 呢?没错,确实可以这样写,就是要注意此时的回调函数一定要有 static 修饰,是个静态函数(方法)。当然 inverse 也可是其他类的成员函数,那么就是 'AnotherClass::inverse',此时 inverse 必须是非 private 的。

除此之外,还可以用另外一种办法,就是在 'inverse' 参数位置上代之以数组,数组的第一个元素指明回调函数从哪里来,第二个元素指定回调函数名。可使用的两种形式是:

//第一种写法

$text = preg_replace_callback ("/(.+?):(.+)/", array($this,'inverse'), $src_str);

//第二种写法,如果 inverse 函数是声明在 InverseHome 类中的

$inverse_home = new InverseHome();

$text = preg_replace_callback ("/(.+?):(.+)/", array($inverse_home,'inverse'), $src_str);

//第三种写法

$text = preg_replace_callback ("/(.+?):(.+)/", array('ReplaceClass','inverse'), $src_str);

1

2

3

4

5

6

7

8

9

//第一种写法

$text=preg_replace_callback("/(.+?):(.+)/",array($this,'inverse'),$src_str);

//第二种写法,如果 inverse 函数是声明在 InverseHome 类中的

$inverse_home=newInverseHome();

$text=preg_replace_callback("/(.+?):(.+)/",array($inverse_home,'inverse'),$src_str);

//第三种写法

$text=preg_replace_callback("/(.+?):(.+)/",array('ReplaceClass','inverse'),$src_str);

可能蒙其他较为规范的面向对象语方的影响,你会认为第一、二种写法时,inverse() 函数必须非静态的,作为实例成员;而第二种用法时,inverse() 函数必须是静态的,是一个类成员。可是套用到这里就有些牵强,实际上 PHP 对 inverse() 函数是否为静态没有任何要求的。只是要受到 inverse() 函数是否为 private 的限制,如果 inverse() 函数是 private 的,第二、三种写法是不合法的。

理解了上面的回调函数所处位置的用法要求时,如果在 WordPress 的源代码看到下面这样的代码时:

add_action('init', array($custom_url_rewriter,'redirect'), 1);

就不会觉得奇怪了,这里的回调函数是定义在实例 $custom_url_rewriter 所在类中,且是非 private 的。

http://www.lbrq.cn/news/1302049.html

相关文章:

  • 能看人与动物做的网站/结构优化设计
  • 淄博网站建设电话咨询/国外免费源码共享网站
  • wordpress add filter/seo怎么收费
  • 荣泰建设集团网站/重庆今日头条新闻消息
  • 桥南做网站/网络关键词排名软件
  • 网站想更换服务器怎么做/宣传推广的形式有哪些
  • 强大的wordpress主题/武汉久都seo
  • 本地网站建设官网/百度首页登录入口
  • 传奇手游排行榜2021前十名/seo优化一般包括哪些
  • 网络网站建设价格/760关键词排名查询
  • 陕西建设网综合综合服务中心/搜索引擎优化的主要手段
  • 亚购物车功能网站怎么做的/济南谷歌推广
  • 马云的网站怎么做的/个人网站网页首页
  • 设计大赛官网/网站自然排名怎么优化
  • 学校网站建设源代码/全国疫情最新报告
  • 网易网站建设/网站内容检测
  • 网站建设需要哪些/360seo
  • 自己的网站可以做淘客吗/湖南产品网络推广业务
  • 如何制作自己的作品集网站/搜索引擎营销的特点包括
  • 深圳网站的设计公司/学百度推广培训
  • 360免费建站怎么样/seo入门教程seo入门
  • 广州推广公司/seo技术是干什么的
  • 三亚城乡建设局网站/事件营销的概念
  • 我要啦免费统计怎么做网站/win7优化极致性能
  • 做我的奴隶 good网站/世界球队实力排名
  • 找团队做网站需要明确哪些东西/东莞seo靠谱
  • 旗舰店的网站怎么做/长尾关键词搜索网站
  • 制作网站公司合同注意事项/临沂森工木业有限公司
  • 国家重点学科建设网站/百度seo和sem的区别
  • 如何做日语网站/seo服务公司上海
  • 【橘子分布式】gRPC(编程篇-中)
  • 某邮生活旋转验证码逆向
  • 14-链路聚合
  • Copula 回归与结构方程模型:R 语言构建多变量因果关系网络
  • VSCode 配置 C# 开发环境完整教程(附效果截图)
  • React Native 基础tabBar和自定义tabBar - bottom-tabs