澳门新葡萄京娱乐网站-澳门新葡萄京888官网-所有平台

热门关键词: 澳门新葡萄京娱乐网站,澳门新葡萄京888官网

类格局的表明和得以完结

作者: 编程知识  发布:2019-12-18

仰望本文所述对我们的php程序设计具备助于。

  • toJson 方法

2.类方式完成

+ 必须写在以@implementation开头,@end之间
+ 在声明的后面加上{}即表示实现
+ 将需要实现的代码写在{}中

function add_wm($nmw_water, $src_file, $output_file, $x, $y) { if(file_exists return; $w1 = MagickGetImageWidth; $h1 = MagickGetImageHeight; $nmw =NewMagickWand(); MagickReadImage; // 默认的加水印位置调整 $lt_w = 50; $lt_h = 50; if{ $w = MagickGetImageWidth; $h = MagickGetImageHeight; $x = $w; $y = $h; }else{ // 根据具体情况调整 $lt_w = 30; $lt_h = 40; } MagickCompositeImage($nmw, $nmw_water, MW_OverCompositeOp, $x - $w1 - $lt_w, $y - $h1 - $lt_h); MagickWriteImage; DestroyMagickWand; } // 还是groovy的eachFileRecurse好用啊 function add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr) { $dp = dir; while{ if($file != '.' && $file != '..'){ if(is_dir($to_dir . '/' . $file)){ mkdir($output_dir . '/' . $file); add_wm_recurse($nmw_water, $to_dir . '/' . $file, $output_dir . '/' . $file, $arr); }else{ if(!array_key_exists($to_dir . '/' . $file, $arr)){ continue; } $sub_arr = $arr[$to_dir . '/' . $file]; if{ $x = intval; $y = intval; add_wm($nmw_water, $to_dir . '/' . $file, $output_dir . '/' . $file, $x, $y); } } } } $dp->close(); } $to_dir = './resized'; $output_dir = './output'; // 这个是我用java的ImageIO遍历图片像素获取的符合裤子颜色的区域的坐标array $arr = array; $water = './water.png'; $nmw_water =NewMagickWand(); MagickReadImage; add_wm_recurse($nmw_water, $to_dir, $output_dir, $arr); DestroyMagickWand;

3.目的方法和类方式分别

  • 目的方法

    • 指标方法是归于对象的主意
    • 以减号-开头
    • 只得让对象调用,未有对象,那些方法不能够被试行
    • 指标方法能访问实例变量(成员变量)
    • 对象方法中能够调用当前指标的对象方法
    • 指标方法中得以调用别的对象的对象方法
    • 对象方法中不可能调用类方法
  • 类方法

    • 类措施是归于类的
    • 以加号+开头
    • 只好用类名调用,对象不能够调用
    • 类格局中无法一向访谈实例变量(成员变量)
    • 类方式中不可能平昔调用对象方法,要想调用对象方法,必得创立或传播对象。
  • 选拔场馆:

    • 当无需走访成员变量的时候,尽量用类方法
  • 类措施和对象方法能够同名


正文实例叙述了PHP根据图片色界在不一样职位加水印的方法。分享给大家供我们参照他事他说加以考察。具体得以完毕方式如下:

  • reject 方法

目录

  1. 类方式注脚
  2. 类措施达成
  3. 对象方法和类方式分别

  • whereInStrict 方法

1.类办法注明

  • 格式

    • 将对象方法-号变为+号
  • 特征

    • 类方式以+开头 如+(void卡塔尔国put;
    • 类格局只可以由类来调用
    • 类措施中不可能访谈实例(成员卡塔尔(قطر‎变量,因为类措施由类来调用,并未开创存款和储蓄空间 来存款和储蓄类中的成员变量。
  • 类格局的裨益:

    • 节约内部存款和储蓄器空间
    • 不重视于对象,推行作用更加高;
    • 能用类措施清除的难点,尽量利用类方式;
  • 类格局的场馆:

    • 当方法内部无需动用到成员变量时,能够改为类方式
    • 类格局平常用来编写工具方法
  • 示例

//声明没有返回值的方法
+ (void)method;
//声明有返回值的方法
+ (int)method;
//声明有返回值有参数的方法
+ (int)method: (int)var;
//声明有返回值有多个参数的方法
+ (int)method: (int)var1 andVar2: (int)var2;

    /**
     * Get the collection of items as a plain array.
     *
     * @return array
     */
    public function toArray()
    {
        return array_map(function ($value) {
            return $value instanceof Arrayable ? $value->toArray() : $value;
        }, $this->items);
    }
  • where 方法
  • median 方法
# 检查集合中每一个元素是否符合条件
# 源码参考
    /**
     * Determine if all items in the collection pass the given test.
     *
     * @param  string|callable  $key
     * @param  mixed  $operator
     * @param  mixed  $value
     * @return bool
     */
    public function every($key, $operator = null, $value = null)
    {
        if (func_num_args() == 1) {
            $callback = $this->valueRetriever($key);

            foreach ($this->items as $k => $v) {
                if (! $callback($v, $k)) {
                    return false;
                }
            }

            return true;
        }

        if (func_num_args() == 2) {
            $value = $operator;

            $operator = '=';
        }

        return $this->every($this->operatorForWhere($key, $operator, $value));
    }
# 使用示例
$collection = collect(array(array(12,11,'php'=>13),array(12,1,'php'=>13),array('php'=>12,3)));
$result = $collection->every(function($v,$k){
    # $v 值 $k 键
    # 条件判断 
    # return false; 比较失败终止比较返回false
    # return true; 本次比较通过,进行下次比较
    return true;
});
dump($result);    //> true
dump($collection->every('php','>',12)); //> false
# php键 是否存在集合里(集合里的每一个数组中)
dump($collection->every('php')); //> true 
dump(collect(array(array(12,11,'php'=>13),array(12,1,'php'=>13),array(3)))->every('php')); //> false
# 支持比较符 null(=) = == != <> > < >= <= === !==
# 更多用法 - 参看源码
  • min 方法
  • map 方法
  • whereIn 方法
    /**
     * Zip the collection together with one or more arrays.
     *
     * e.g. new Collection([1, 2, 3])->zip([4, 5, 6]);
     *      => [[1, 4], [2, 5], [3, 6]]
     *
     * @param  mixed ...$items
     * @return static
     */
    public function zip($items)
    {
        $arrayableItems = array_map(function ($items) {
            return $this->getArrayableItems($items);
        }, func_get_args());

        $params = array_merge([function () {
            return new static(func_get_args());
        }, $this->items], $arrayableItems);

        return new static(call_user_func_array('array_map', $params));
    }
  • 始建集合
# 源码 - when 方法使用很简单这里不详细举例了
    /**
     * Apply the callback if the value is truthy.
     *
     * @param  bool  $value            # 判断条件
     * @param  callable  $callback
     * @param  callable  $default
     * @return mixed
     */
    public function when($value, callable $callback, callable $default = null)
    {
        if ($value) {
            return $callback($this);
        } elseif ($default) {
            return $default($this);
        }

        return $this;
    }
    /**
     * Execute a callback over each item.
     *
     * @param  callable  $callback
     * @return $this
     */
    public function each(callable $callback)
    {
        foreach ($this->items as $key => $item) {
            if ($callback($item, $key) === false) {
                break;
            }
        }

        return $this;
    }
$collection = collect(array(array(12,11,'php'=>13),array(12,1,'php'=>13),array('php'=>12,3)));
$collection->each(function ($value,$key){
    # $value 值 $key 键
    dump($value);
    dump($key);
});
  • toArray 方法
$collection = collect(array('hello'=>"miss",'php'=>2,'or',3))->avg(); //> 不推荐
dump($collection); //> 1.25 = (2+3)/4
$collection = collect(array(1,3,5,7,9))->avg();
dump($collection); //> 5 = (1+3+5+7+9)/5
$collection = collect(array(array('php'=>12,13,43),array('es'=>12,13,'php'=>32)))->avg('php');
dump($collection); //> 22 = (12+32)/2
# 参考where方法 严格等于 筛选
    /**
     * Filter items by the given key value pair using strict comparison.
     *
     * @param  string  $key
     * @param  mixed  $value
     * @return static
     */
    public function whereStrict($key, $value)
    {
        return $this->where($key, '===', $value);
    }
# max 推荐纯数值集合
$collection = collect(array('hello'=>"miss",'php'=>2,'or',3))->max();  //> 不推荐
dump($collection); //> 3
$collection = collect(array(1,3,5,7,9))->max();
dump($collection); //> 9
$collection = collect(array(array('php'=>12,13,43),array('es'=>12,13,'php'=>32)))->max('php');
dump($collection); //> 32
  • whereNotIn 方法
    /**
     * Pass the collection to the given callback and then return it.
     *
     * @param  callable  $callback
     * @return $this
     */
    public function tap(callable $callback)
    {
        $callback(new static($this->items));

        return $this;
    }
    $collection = collect(array('hello'=>"miss",'php'=>2,'or',3));
    $collection->tap(function($coll){
        dump($coll); //> collect(array('hello'=>"miss",'php'=>2,'or',3))
    });
# 该方法正好和whereIn用法相反
    /**
     * Filter items by the given key value pair.
     *
     * @param  string  $key
     * @param  mixed  $values
     * @param  bool  $strict
     * @return static
     */
    public function whereNotIn($key, $values, $strict = false)
    {
        $values = $this->getArrayableItems($values);

        return $this->reject(function ($item) use ($key, $values, $strict) {
            return in_array(data_get($item, $key), $values, $strict);
        });
    }
# min 推荐纯数值集合
$collection = collect(array('hello'=>"miss",'php'=>2,'or',3))->min(); //> 不推荐
dump($collection); //> miss
$collection = collect(array(1,3,5,7,9))->min();
dump($collection); //> 1
$collection = collect(array(array('php'=>12,13,43),array('es'=>12,13,'php'=>32)))->min('php');
dump($collection); //> 12
# 返回出现次数最多的数
$collection = collect(array(array(12,11,'php'=>13),array(12,1,'php'=>13),array('php'=>12,3)));
dump($collection->mode('php')); //> [13]
$collection = collect(array('hello'=>34,'php'=>2,'we'=>34,'ed'=>34,'wd'=>3,2,2));
dump($collection->mode());  //> [34,2]
$collection = collect(array(12,3,234,21,32,123,1,1,2,2));
dump($collection->mode());  //> [1,2]
    /**
     *  @param mixed $value
     *  @return IlluminateSupportCollection
     *  辅助函数 collect 创建 Collection 对象
     */
     Collection function collect($value = null);
     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    /**
     *  @param mixed $value
     *  @return IlluminateSupportCollection
     *  采用 new 关键字创建Collection集合对象
     */
    new IlluminateSupportCollection($value);
  • sum 方法
  • avg 方法
# 源码 - 给定集合键(过滤集合)是否在另一个数组或集合里存在
    /**
     * Filter items by the given key value pair.
     *
     * @param  string  $key       # 给定集合里的键
     * @param  mixed  $values # 另一个集合或数组
     * @param  bool  $strict       # 是否开启严格比较
     * @return static
     */
    public function whereIn($key, $values, $strict = false)
    {
        $values = $this->getArrayableItems($values);

        return $this->filter(function ($item) use ($key, $values, $strict) {
            return in_array(data_get($item, $key), $values, $strict);
        });
    }
$collection = collect(array('hello'=>"miss",'php'=>2,'or',3))->sum();
dump($collection); //> 5
$collection = collect(array(1,3,5,7,9))->sum();
dump($collection); //> 25
$collection = collect(array(array('php'=>12,13,43),array('es'=>12,13,'php'=>32)))->sum('php');
dump($collection); //> 44
  • every 方法
# 该方法和whereInStrict用法相反
    /**
     * Filter items by the given key value pair using strict comparison.
     *
     * @param  string  $key
     * @param  mixed  $values
     * @return static
     */
    public function whereNotInStrict($key, $values)
    {
        return $this->whereNotIn($key, $values, true);
    }
# 过滤掉其他数据 刷选
    /**
     * Filter items by the given key value pair.
     *
     * @param  string  $key
     * @param  mixed  $operator
     * @param  mixed  $value
     * @return static
     */
    public function where($key, $operator, $value = null)
    {
        if (func_num_args() == 2) {
            $value = $operator;

            $operator = '=';
        }

        return $this->filter($this->operatorForWhere($key, $operator, $value));
    }
# 使用示例
$collection = collect(array(array(12,11,'php'=>13),array(12,1,'php'=>13),array(3)));
dump($collection->where('php','=',13)); //> collect(array(array(12,11,'php'=>13),array(12,1,'php'=>13)))
# 支持比较符 null(=) = == != <> > < >= <= === !==
  • zip 方法
# 源码 - 参考when方法
    /**
     * Apply the callback if the value is falsy.
     *
     * @param  bool  $value            # 判断条件
     * @param  callable  $callback
     * @param  callable  $default
     * @return mixed
     */
    public function unless($value, callable $callback, callable $default = null)
    {
        return $this->when(! $value, $callback, $default);
    }
  • mode 方法
# 获取给定集合的中间值(排序后的中间值)
# 集合是奇数 获取中间数值
# 集合是偶数 获取中间两个数的平均值
$collection = collect(array('hello'=>34,'php'=>2,'we'=>32,'ed'=>54,'wd'=>3,43));
dump($collection->median());  //> 33 = (34+32)/2
$collection = collect(array('hello'=>34,'php'=>2,'we'=>32,'ed'=>54,'wd'=>3));
dump($collection->median()); //> 32
$collection = collect(array(array(12,11,'php'=>43),array(12,1,'php'=>23),array('php'=>12,3)));
dump($collection->median('php')); //> 23
  • all 方法
# 严格过滤 - 参看whereIn方法
    /**
     * Filter items by the given key value pair using strict comparison.
     *
     * @param  string  $key
     * @param  mixed  $values
     * @return static
     */
    public function whereInStrict($key, $values)
    {
        return $this->whereIn($key, $values, true);
    }
# 参看 array_map() 函数
$collection = collect(array('hello'=>"miss",'php'=>"mr",'or','golang'));
# 遍历集合数组元素(返回插入集合数值)
$coll = $collection->map(function ($value,$key){
    # $value 值 $key 键
    return "a12";
});
dump($coll); //> collect(array('hello'=>"a12",'php'=>"a12","a12","a12"))
    /**
     * @return array
     * 得到当前Collection的值 $this->items
     */
     public function all();
  • max 方法
# 过滤集合中元素参看 array_filter() 方法
$collection = collect(array('hello'=>"miss",'php'=>"mr",'or','golang'));
# 遍历集合数组元素(返回插入集合数值)
$coll = $collection->reject(function ($value,$key){
      # $value 值 $key 键
      # 返回值 bool:true 过滤该值
    if( $key === 'php' ){
        return true;
    }
    return false;
});
dump($coll); //> collect(array('hello'=>"miss,'or','golang'))
  • whereStrict 方法
  • each 方法
    /**
     * Get the collection of items as JSON.
     *
     * @param  int  $options
     * @return string
     */
    public function toJson($options = 0)
    {
        return json_encode($this->jsonSerialize(), $options);
    }
    /**
     * Convert the object into something JSON serializable.
     *
     * @return array
     */
    public function jsonSerialize()
    {
        return array_map(function ($value) {
            if ($value instanceof JsonSerializable) {
                return $value->jsonSerialize();
            } elseif ($value instanceof Jsonable) {
                return json_decode($value->toJson(), true);
            } elseif ($value instanceof Arrayable) {
                return $value->toArray();
            } else {
                return $value;
            }
        }, $this->items);
    }
  • unless 方法
  • tap 方法
  • when 方法

本文由澳门新葡萄京娱乐网站发布于编程知识,转载请注明出处:类格局的表明和得以完结

关键词:

上一篇:先清楚这一个必会的才行
下一篇:没有了