扫码关注官方订阅号
strlen (strim ($str))这是获取字符串长度的函数,如何写成链式操作?
strlen (strim ($str))
$str -> trim() -> strlen()
提示:
先实现一个String类,对这个类的对象调用方法进行处理时,触发__call魔术方法,接着执行call_user_func即可
认证0级讲师
<?php /** * Created by PhpStorm. * User: hongxu * Date: 16/8/4 * Time: 13:21 */ class str { private $str = ''; /** * str constructor. */ public function __construct($str) { $this->str = $str; } public function trim() { $this->str = trim($this->str); return $this; } public function strlen() { return strlen($this->str); } } $str = new str('要思考,不做伸手党'); var_dump($str->trim()->strlen());die;
output:
php test.php int(25)
<?php class Str { private $value = ''; public function __construct($str) { $this->value = $str; } public function __call($name, $args) { if (function_exists($name)) { array_unshift($args, $this->value); $value = call_user_func_array($name, $args); if (is_string($value)) { return new static($value); } else { return $value; } } } public function __toString() { return $this->value; } } $str = new Str(' 题主是不是个伸手党? '); echo($str->trim() . PHP_EOL); echo($str->trim()->strlen() . PHP_EOL); $trim_str = $str->trim(); echo($trim_str->substr(0, $trim_str->strlen() - 1) . PHP_EOL);
题主是不是个伸手党? 28 题主是不是个伸手党
要实现这样的功能并不难,只需要对string进行封装一下。如果需要链式调用,则可台返回$this即可。请看如下代码,即可实现您的功能:
<?php //演示链式调用 class MyString{ private $string; function MyString($str){ $this->string=$str; } function len(){ return strlen($this->string); } function _trim(){ $this->string=trim($this->string); return $this; } } $d=new MyString(' sdfsdf '); echo $d->_trim()->len(); ?>
->为什么要空格 = =,看上去好奇怪
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
output:
要实现这样的功能并不难,只需要对string进行封装一下。如果需要链式调用,则可台返回$this即可。
请看如下代码,即可实现您的功能:
->为什么要空格 = =,看上去好奇怪