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,并且换两行。

 

php 后知后觉的更多相关文章

  1. CMS4.0——后知后觉

    前言: 2016年底,自己作为参与者加入CMS3.0的改版中:2017年中,CMS4.0在经过一个月有余的时间,华丽丽的蜕变成现在大家喜闻乐见的:http://news.gangguwang.com/ ...

  2. 关于Node.js后端架构的一点后知后觉

    前言 上周有幸和淘宝前端团队的七念老师做了一些NodeJS方面上的交流(实际情况其实是他电话面试了我╮(╯-╰)╭),我们主要聊到了我参与维护的一个线上NodeJS服务,关于它的现状和当下的不足.他向 ...

  3. Oracle 反应太后知后觉了.

    很久已经提过一个SR,关于BES一个用户可以用两个密码登陆EBS系统的问题,但是SR解决太慢,而且一致强调你们的版本太低,需要升级到最新的版本,考虑客户化的问题,我们的版本没有升级(R2.1.1),无 ...

  4. DS Tree 已知后序、中序 => 建树 => 求先序

    注意点: 和上一篇的DS Tree 已知先序.中序 => 建树 => 求后序差不多,注意的地方是在aftorder中找根节点的时候,是从右往左找,因此递归的时候注意参数,最好是拿纸和笔模拟 ...

  5. 温故而后知新——对ado.net中常用对象的一些解释

    在使用ado.net连接数据库获取数据,一般的步骤是: 1.设置好web.config    //用来设置服务器数据库的地址以及登录名密码 2.创建Connection对象    //用来创建访问数据 ...

  6. PAT 甲级 1020 Tree Traversals (25 分)(二叉树已知后序和中序建树求层序)

    1020 Tree Traversals (25 分)   Suppose that all the keys in a binary tree are distinct positive integ ...

  7. 天梯 L2 树的遍历(已知后序中序求层序)

    树的遍历 (25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数.第二行 ...

  8. PAT A1020——已知后序中序遍历求层序遍历

    1020 Tree Traversals Suppose that all the keys in a binary tree are distinct positive integers. Give ...

  9. Win10升级后回退后无法检测新版本的修复办法

    笔记本原来装的是Win10 10240版本,升级到14393版本后进行了回退.回退后,Win10系统再也检测不到新版本更新了.   解决办法如下: 1.打开注册表:HKEY_LOCAL_MACHINE ...

随机推荐

  1. 将对象转成 json 以及 将字符串 hash(SHA1) 加密

    如下: /// <summary> /// 生成 Json /// </summary> /// <param name="obj"></ ...

  2. decode函数解决oracle报错"除数为0"的问题

    公司的网站在运行的时候突然报错打不开了,打开一看发现报了一个错:ORA-01476:除数为0. 网上一搜发现还是挺多人遇到这个问题的,解决办法就是用decode函数. decode是oracle内置的 ...

  3. JQ菜单滑块

    网站导航滑块效果: 复制以下代码保存到html文件中即可查看效果... <html> <head> <title>JQ菜单滑块</title> < ...

  4. Python语言:Day9练习题及其答案

    1.使用while循环输出1,2,3,4,5,6, 8,9,10 #!/usr/bin/python3 n = 1 while n <= 10: if n != 7: print(n) else ...

  5. float和position谁好?

    float从字面上的意思就是浮动,float能让元素从文档流中抽出,它并不占文档流的空间,典型的就是图文混排中文字环绕图片的效果了.不过需要注意的是清除浮动是我们可能需要注意的地方.而position ...

  6. Vmware网络不可达

    1. ifconfig -a   查看当前的网卡 2. cd  /etc/sysconfig/network-scripts/ 3. 打开对应网卡名称文件, 具体修改内容参考(https://www. ...

  7. HIVE中IN的坑

    问题:为什么HIVE中用了 NOT IN,结果集没了? 注:这个是原创,转载请注明,谢谢!直接进实验室>> > select * from a;OK1 a12 a23 a3Time ...

  8. springboot入门学习-helloworld实例

    今天学习了springboot,发现使用springboot创建项目确实非常方便,创建第一个springboot项目之前先看一下下面两个问题. 一.什么是springboot? Spring Boot ...

  9. OO第一单元作业总结之初识面向对象

    第一个单元的三次作业均为求导,循序渐进的让我们掌握如何构造类和方法,让整个代码是面向对象的设计而不是面向过程的设计.如果第一次作业和第二次作业你只是简单的对过程着手架构类,到了第三次作业就会变得格外麻 ...

  10. python文件(概念、基本操作、常用操作、文本文件的编码方式)

    文件 目标 文件的概念 文件的基本操作 文件/文件夹的常用操作 文本文件的编码方式 01. 文件的概念 1.1 文件的概念和作用 计算机的 文件,就是存储在某种 长期储存设备 上的一段 数据 长期存储 ...