PHP开发中的使用到的一些知识点(持续更新)

栏目: PHP · 发布时间: 5年前

内容简介:这篇文章用来记录开发中遇到的一些小问题的解决方案,会保持持续更新。一种奇特的调用方式,看下面的使用示例,使用类的方法变得更加灵活了。其中,

这篇文章用来记录开发中遇到的一些小问题的解决方案,会保持持续更新。

call_user_func()函数和call_user_func_array()函数

一种奇特的调用方式,看下面的使用示例,使用类的方法变得更加灵活了。

<?php

class Test
{
    public function do($str)
    {
        echo $str . PHP_EOL;
    }

}

class Stest
{
    public static function do($a, $b)
    {
        var_dump($a + $b);
    }
}

// 调用内置函数
$a = call_user_func('explode', ',', '1,2,3');
var_dump($a);

$a = call_user_func_array('explode', [',', '1,2,3']);
var_dump($a);

// 匿名函数调用
$b = call_user_func(function($x, $y){
    return $x - $y;
}, 13, 9);
var_dump($b);

$b = call_user_func_array(function($x, $y){
    return $x + $y;
}, [11, 22]);
var_dump($b);

$p = 10;
$b = call_user_func_array(function($x, $y) use($p){
    return $x + $y + $p;
}, [11, 22]);
var_dump($b);

// 调用对象的方法
call_user_func([(new Test()), 'do'], '99999888888');

// 静态方法调用
$class = 'STest';
call_user_func([$class, 'do'], 12, 10);
call_user_func_array([$class, 'do'], [88, 10]);

// 静态方法另外一种写法
call_user_func($class . '::do', 12, 10);
call_user_func_array($class . '::do', [88, 10]);

统计富文本提交中文文本的长度:

$length = mb_strlen(strip_tags(htmlspecialchars_decode($data['content'])),'UTF8');

其中, htmlspecialchars_decode() 反转义 html 标签, strip_tags() 去掉标签, mb_strlen($str,'UTF8') 统计长度。

php判断进程是否存在,不存在则重启

public function checkQueue()
    {
        $cmd = 'ps axu | grep "queue" | grep -v "grep" | wc -l';
        $ret = shell_exec("$cmd");
        $ret = rtrim($ret, "\r\n");

        if($ret === "0") {
            $php_path = '/www/test/index.php'; //php脚本路径
            $start_cmd = "nohup " . $php_path . " queue >> /www/test/log/queue.log 2>&1 &";
            $ret = shell_exec("$start_cmd");
        }
    }

自动加载函数spl_autoload_register()的使用

这个函数在很多框架的自动加载机制中都有用到,了解一下。在根目录新建一个子文件夹 class ,里面有一个类文件 Dog.php

<?php
class Dog
{
    public function doSomething()
    {
        echo 'SAY: "Hello world!!!"';
    }

}

在根目录运行 index.php

<?php
class AutoLoader {
    public static $_path = __DIR__ . '/class/';

    public static function run($class) {
        $file = self::$_path . $class . '.php';  
        if (is_file($file)) {
            require_once($file);  
        }
    }
}

spl_autoload_register("AutoLoader::run");
// 另外一种写法 spl_autoload_register(array('AutoLoader', 'run')); 
$obj = new Dog();
$obj->doSomething();
// 运行结果 SAY: "Hello world!!!"

当new一个未被引入的类时(Dog类),spl_autoload_register()会运行AutoLoader类的run方法,根据类名和事先约定好的路径,去尝试加载这个类,代码得以正常运行,这在框架中新建类的自动加载时很有用。

自动获取第一天最后一天

// 当前时间2019-04-11
echo date("Y-m-d", strtotime("2019-02 first day of")).'<br>';    // 2019-02-01
echo date("Y-m-d", strtotime("2019-02 last day of")).'<br>';     // 2019-02-28
echo date("Y-m-d", strtotime("2019-05 last day of")).'<br>';     // 2019-05-31
echo date("Y-m-d", strtotime("first day of")).'<br>';            // 2019-04-01
echo date("Y-m-d", strtotime("last day of")).'<br>';             // 2019-04-30

上面是使用 PHP 自带的时间函数来处理日期问题,处理更复杂一些的日期相关问题,强烈建议使用第三方包 Carbon

二维数组中某个字段求和

$arr = [
    ['date' => "2019-03-06", "count" => 129],
    ['date' => "2019-03-13", "count" => 101],
    ['date' => "2019-03-28", "count" => 244],
];
echo array_sum(array_column($arr, 'count'))]; 
// 474
PHP开发中的使用到的一些知识点(持续更新)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

社交电商

社交电商

[美] Stephan Spencer(斯蒂芬.斯宾塞)、[美] Jimmy Harding(吉米.哈丁)、[美] Jennifer Sheahan(詹尼弗.希汉) / 谭磊 / 电子工业出版社 / 2015-3 / 69.00元

你想要在互联网上赚钱吗?想要做好电子商务吗?那么你一定不能忽视社交媒体的力量。不管你想要营销的是实物商品、电子类产品还是本地的服务,这本书会教你怎么做。 《社交电商》全面介绍形形色色的社交媒体以及如何利用这些社交媒体来为你的企业做好服务。如果你经营得不好,在社交媒体上散发出的只是噪声而不是真正的信息。 而如果做得好,社交媒体会成为你最有效的营销工具,帮助你赢得老客户的拥戴,获得新的客户。 ......一起来看看 《社交电商》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

html转js在线工具
html转js在线工具

html转js在线工具