一个php链式操作的demo

发布于:2020-08-08 17:04:57

chain.php

<?php
/**
 * 该类的目标不是写一个排序,而是怎样实现一个链式操作
 * 提供了两种排序方法,可以任意使用,体现出链式操作的方便性
 */
class chain{
     
    /**
     * 要排序的数组
     */
    protected $arr = [];
     
    /**
     * 排序类型,正序和倒序,asc正序,desc倒序
     */
    protected $type = "asc";
     
    /**
     * 得到数据源
     +-----------------------------------------
     * @param array $arr 得到要排序的数组
     * @return this
     */
    public  function data($arr){
        $this->arr = $arr;
        return $this;
    }
     
    /**
     * 实现排序规则
     +-----------------------------------------------
     * @param int $type 排序规则,0为倒序,1为正序
     * @return this
     */
    public function order($type){
        $this->type = $type;
        return $this;
    }
     
    /**
     * 处理排序功能,冒泡排序法
     */
    public function bubble(){
        for($i = 0,$k = count($this->arr); $i < $k; $i++) {
            for ($j = $i + 1;$j < $k; $j++) {
                if($this->type == 'desc'){
                    if($this->arr[$i] < $this->arr[$j]){
                        $temp = $this->arr[$j];
                        $this->arr[$j] = $this->arr[$i];
                        $this->arr[$i] = $temp;
                    }
                }else{
                    if($this->arr[$i] > $this->arr[$j]){
                        $temp = $this->arr[$j];
                        $this->arr[$j] = $this->arr[$i];
                        $this->arr[$i] = $temp;
                    }
                }
            }
        }
        return $this->arr;
    }
     
    /**
     * 使用PHP内置函数排序
     */
    public function sorts(){
        if($this->type == 'desc'){
            arsort($this->arr);
        }else{
            asort($this->arr);
        }
        return $this->arr;
    }
}
 
$chain = new chain();
$result = $chain->data([10,27,3,55,67,125,7,99,6,8])->order("asc")->sorts();
print_r($result);


阅读 85+

一片空白

父爱如山,不善表达。回想十多年前,总记得父亲有个宽厚的肩膀,小小的自己跨坐在上面,越过人山人海去看更广阔的天空,那个时候期望自己有一双翅膀,能够像鸟儿一样飞得高,看得远。虽然父亲有时会和自己开玩笑,但在做错事的时候会受到严厉的训斥。父亲有双粗糙的大手掌。