朕的大清完了

朕的大清完了

这家伙有点懒,还没写个性签名!

  • 财富值479
  • 威望值20
  • 总积分899

个人信息

  • 提出了问题
    Yii 如何实现 max() as data?
  • function curl_post_contents($url, $data = array(), $cookiepath = '',$timeout=10){
        $userAgent = 'Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)';
        $referer = $url;
        if(!is_array($data) || !$url) return '';
        $post = '';
        foreach($data as $key => $value){
            $post .= $key . '=' . urlencode($value) . '&';
        }
        rtrim($post, '&');
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);                //设置访问的url地址
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);        //设置超时
        curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);    //用户访问代理 User-Agent
        curl_setopt($ch, CURLOPT_REFERER, $referer);        //设置 referer
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);        //跟踪301
        curl_setopt($ch, CURLOPT_POST, 1);                  //指定post数据
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);        //添加变量
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiepath);   //COOKIE的存储路径,返回时保存COOKIE的路径
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        //返回结果
        $content = curl_exec($ch);
        curl_close($ch);
        return $content;
    }
    
     function curl_get_contents($url, $timeout = 5)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
    
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        @curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, true);
        curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 86400); // 缓存一天
        $content = curl_exec($ch);
        curl_close($ch);
        return $content;
    }
    
  • 回复了 的回答

    类::其他方法1(); 是静态调用,没有实例化类
    单例是,实例后的类给了静态变量,就是在一个功能里,如果多次使用这个类,那就只需要实例化一次类就可以了
    不知道我这么说,有说的明白吗,这也是我个人理解哈

    意思是说,一个类里面只能是一种功能吗,

    因为必须调用构造方法,构造方法里面再组合其他方法,所以最终这个类,只能实现一个功能,是这理解嘛

    方法必须以getInstance命名吗,教程里面也是这名字

  • 单例就是一次生命周期内只会实例化一次类的,每次调用的对象都是同一个对象,比如数据库连接或者一些框架启动阶段实例化的Application对象

    今天特意回炉看了下教程,单例模式,我想这yii的db类底层应该就是单例了吧,

    因为看到别人一个项目里面用到单例模式写的,文件读写类,里面就用这模式写的,

    谢谢回复

  • 2019-03-19 已签到
    连续签到6天,获得了20个金钱
  • 回复了 的回答

    了解下PHP设计模式-单例模式

    好的,谢谢,
    简单的so了一下,大意就是减少new造成资源消耗。

    那和静态方法调用的有啥分别吗

    好象有点明白了,

    这个单例模式可以这样调,

    $cc = Demo::getInstance();//实例化
    $cc->demo();//其他方法
    
  • 回复了 的回答

    这个是单例。

    self::$instance 类似 $this->instance 只是定义的instance不同。

    new self();创建一个对象。new是创建的意思

    public static function init(){
      if(self::$instance instanceof self){  //instanceof是运算符 判断 左边的对象是否是右边的实例
        return false
      }
      self::$instance = new self();  //如果不是不是就创建一个实例
    }
    

    感谢大佬回复,相对其他大佬的看起来易于理解,非常感谢

  • 回复了 的回答

    这是php基础啊,这个应该去php.net看手册才行。首先,self是啥?大概范围应该是面向对象这部分,那就找吧:

    http://php.net/manual/zh/language.oop5.basic.php

    在这一页找到了这句话:
    在类定义内部,可以用 new self 和 new parent 创建新对象。
    所以,new self() 在哪个类中,就是实例化那个类,这种实例化方式比较通用。看你上面的代码就是实例File类。
    那么self::$instance想必也好理解了,看这里:

    http://php.net/manual/zh/language.oop5.properties.php

    这一页有这么一句话:
    静态属性则是用 ::(双冒号):self::$property 来访问。更多静态属性与非静态属性的区别参见 Static 关键字。

    instanceof 是啥意思呢?我觉得应该去操作符相关里面找找,留给你吧。
    总结下,哪些是yii2的知识,你就去网站的文档,api这些里去找;如果是php基础的,那自然去php手册里呗。
    好好理解下。

    感谢大佬回复,意思是用了这函数,调用这类可以静态调用,又能$this调用嘛

主管 等级规则
899/1000
资料完整度
10/100
用户活跃度
20/100

Ta的关注

0

Ta的粉丝

2

Ta的访客

31