zoukankan      html  css  js  c++  java
  • php 后知后觉

    1.$this :动态调用,指当前对象

    通过一个例子,说明一下我当时的心理历程:

    /**
    * 父类
    */
    class A 
    {
    	
    	function show()
    	{
    		echo $this->msg();
    	}
    
    	function msg(){
    		return "";
    	}
    
    }
    

    这是父类,里面有两个方法, 我看到了show调用了msg,msg里面不是没有东西吗?这有什么意思? 是不是**啊?  (→_→)

    然后再写了他的一个子类:

    /**
    * A的子类之一
    */
    class B extends A
    {
    	
    	function msg()
    	{
    		return "this is child";
    	}
    }
    
    $b_obj=new B;
    echo $b_obj->show();
    

     根据查看的项目里A类的子类,我发现在A的子类里都会重写A类的msg()方法,最终调用的还是子类自己的方法。 产生这个问题的原因就是 我没理解  $this 的 真正意义。

    通过上面的输出,在页面上可以看到结果:这是子类的输出。

    在A类的show方法里 var_dump($this);  结果是: object(B)#1 (0) { }    也就是说 实例化B 调用show方法,根据继承关系 会找到A类里的show 方法,

    $this是动态调用,$this指当前对象,这个时候的当前对象不一定就是A类的实例化对象啊,这时候的$this 是B类的实例化对象。

    然后$this->msg();就等于是B类的实例化对象调用自己的msg方法。

    如果A类里show 方法这样写 echo A::msg();   那么就是写死的调用,就是调用A类自己的方法。

    弄明白了这个,真的觉得自己是菜的难受啊......  (-_-||)/

    2017-7-10   在菜的道路上,控制不住记几,越走越远......

    1. 论$i++  和 ++$i 的区别

    后++   最后对自己运算

    前++   首先对自己运算       

    这个很好记,先来后到,在前就先,在后最后。

    1.1

    <?php
    $i=1;
    $y=$i++ ;
    echo $y;	// res: 1
    echo $i;	//res: 2
    

     上面运算可分为 $y=$i   和 $i=$i+1

    $i++ 最后 是对 $i 自己进行运算

    <?php
    $i=1;
    $y=$i++ + 3;
    echo $y;	// res: 4
    echo $i;	//res:2
    

     上面运算分为 $y=1+3, $i=$i+1

    因为 后++ 是最后对自己进行运算,所以先忽略,最后在对自己运算。

    也就是 $i初始是1 所以就是1+3 赋值给 $y,运算结束了,到最后了,$i 对自己运算 $i=$i+1;

    <?php
    $i=1;
    $y=$i++ + ++$i;
    echo $y;	// res: 4
    echo $i;	//res:3
    

    上面运算可分为 $i=$i+1, $y=$i+$i, $i=$i+1

    也就是 $y=2+2 ,$i=1+1+1

    运算里出现了 ++$i,先来后到,在前就先,  所以 不管别的,$i=$i+1=2

    这个时候经过 ++$i这一步运算,$i已经是2了,然后$y=$i++  +  ++$i  = 2++ + 2 =4   然后 $i++ = $i +1=2+1 =3

    主要还是优先级的问题,看懂了记住就好,先来后到,在前就先,在后最后。

    2017-7-12

    1.file_put_contents()

    这两天没事,看了看爬虫,就试着写了一个简单的爬虫,用到了 file_put_contents()这个函数。

    关于这个函数,参数解释如下:

    file_put_contents(file,data,mode,context)

    file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
    data 可选。规定要写入文件的数据。可以是字符串、数组(一维数组)或数据流。
    mode
    可选。规定如何打开/写入文件。可能的值:
    • FILE_USE_INCLUDE_PATH   //检查*filename*的副本路径 ,介个我不懂什么意思
    • FILE_APPEND          //如果设置,则在文件内容末尾追加内容,否则清空文件,重新写入
    • LOCK_EX         //锁定文件
    
    

    该函数访问文件时,遵循以下规则:

    
    
    1. 如果设置了 FILE_USE_INCLUDE_PATH,那么将检查 *filename* 副本的内置路径
    2. 如果文件不存在,将创建一个文件
    3. 打开文件
    4. 如果设置了 LOCK_EX,那么将锁定文件
    5. 如果设置了 FILE_APPEND,那么将移至文件末尾。否则,将会清除文件的内容
    6. 向文件中写入数据
    7. 关闭文件并对所有文件解锁
    
    

    如果成功,该函数将返回写入文件中的字符数。如果失败,则返回 False。

    该函数file_put_contents()插入数据的时候默认是不换行的,如果想要换行,可以用到php的 PHP_EOL 它可自动识别系统并显示成相应的换行符。

    如:file_put_contents($fileName,$b.PHP_EOL.PHP_EOL,FILE_APPEND|LOCK_EX);  //这个就是向$filename这个文件里插入$b,并且换两行。

     
  • 相关阅读:
    ASP.NET MVC4 Web 编程第三章
    ASP.NET MVC4 Web 编程第二章
    2020.08.25日
    ASP.NET MVC4 Web 编程第一章
    .net你必须知道的事儿 2.2
    .net你必须知道的事儿 2.1
    资本论
    Cent os mysql主从同步问题
    apache启动脚本
    zentao(禅道)迁移
  • 原文地址:https://www.cnblogs.com/benpaodelulu/p/7149161.html
Copyright © 2011-2022 走看看