分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

php的连贯操作

发布时间:2023-09-06 01:45责任编辑:赖小花关键词:暂无标签

用过tp的朋友们一定知道他封装的连贯操作,这里简单介绍一下如何实现 无顺序的连贯调用。以及他的原理。(大神略过....)

首先说下两个要点,

一、无顺序

既然是无顺序,那就意味着可以先调用任何一个方法,如何实现呢 ,答案很简单那就是保证每个方法都返回 $this(也就是当前被实例化的对象)。

二调用php函数

这里有两个知识点

①__call(不知道的可以去看手册啊,手册上讲的很清楚)。

②call_user_func_array();还有一个call_user_func()不过没有call_user_func_array()牛逼。

在连贯操作中如果你调用一个未定义的方法,毫无疑问肯定会报错。这个时候就要用到__call,然后使用call_user_func_array去调用php函数。

③多讲一嘴 mergeStr中 有用到一个func_get_args,当函数的参数不确定的时候该函数灰常有用,一定要mark呦

下面举一个小小的例子,以供参考.

class Str{ ???public $value; ???public function __construct($str=null) ???{ ???????$this->value = $str; ???} ???????//合并随机数 ???public function mergeRand() ???{ ???????$rand = mt_rand(10000, 99999); ???????$this->value .= $rand; ???????return $this; ???} ???//合并自定义子串 ???public function mergeStr() ???{ ???????$arr = func_get_args(); ???????if($arr) { ???????????foreach ($arr as $ar) ???????????{ ???????????????$this->value .= $ar; ???????????} ???????} ???????return $this; ???} ???//添加时间戳 ???public function addUnix() ???{ ???????$this->value .= ‘_‘ . time(); ???????return $this; ???} ?/* ?public function __call($name, $args) ???{ ???????$this->value = call_user_func($name, $this->value, $args[0]); ???????return $this; ???}*/ ???public function __call($name, $args) ????{ ????????array_unshift($args, $this->value); ????????$this->value = call_user_func_array($name, $args); ????????return $this; ????}}$str = new Str(‘,aaaabbbb,‘);echo $str->trim(‘,‘)->mergeStr(‘CC‘,‘DD‘)->addUnix()->mergeRand()->md5()->value;die;

php的连贯操作

原文地址:https://www.cnblogs.com/ngx171/p/8579370.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved