PHP 面向对象语法细节

  1. $this伪变量

    The pseudo-variable $this is available when a method is called from within an object context. $this is a reference to the calling object (usually the object to which the method belongs, but possibly another object, if the method is called statically from the context of a secondary object).
    As of PHP 7.0.0 calling a non-static method statically from an incompatible context results in $this being undefined inside the method. Calling a non-static method statically from an incompatible context has been deprecated as of PHP 5.6.0.
    As of PHP 7.0.0 calling a non-static method statically has been generally deprecated (even if called from a compatible context). Before PHP 5.6.0 such calls already triggered a strict notice.

    1. 伪变量$this在object上下文中方法被调用时有效,它是"the calling object"的引用,(通常,the calling object 是方法所属的对象。但是,也可能是其他对象,如果方法是从次级对象(我的理解是子类对象)的上下文中静态调用)。
    2. 如果静态地调用一个非静态的方法,

    例子:

     1 <?php
     2 class A
     3 {
     4     function foo()
     5     {
     6         if (isset($this)) {
     7             echo ‘$this is defined (‘;
     8             echo get_class($this);
     9             echo ")\n";
    10         } else {
    11             echo "\$this is not defined.\n";
    12         }
    13     }
    14 }
    15
    16 class B
    17 {
    18     function bar()
    19     {
    20         A::foo();
    21     }
    22 }
    23
    24 error_reporting(E_ALL);
    25
    26 $a = new A();
    27 $a->foo();
    28
    29 A::foo();                //静态调用非静态方法
    30 $b = new B();
    31 $b->bar();                //从一个incompatibale context静态调用非静态方法
    32
    33 B::bar();                 //静态调用非静态方法bar(),然后在bar()中再次静态调用非静态方法
    34 ?>

    php 5.5.38执行效果

    php 7.1.2执行效果

时间: 2024-08-07 00:05:08

PHP 面向对象语法细节的相关文章

面向对象语法

//类的声明#import <Foundation/Foundation.h>@interface Car : NSObject  //NSObject让Car类具备有创建对象的能力{   @public   int wheels;   int speed; }- (void)run;@end //类的实现@implementation Car- (void) run{   NSLog(@"@%i个轮子,%i世俗的车子跑起来了",wheels,speed);}@end //

【黑马程序员】————面向对象语法2

一.      set方法和get方法 1.          set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数 成员变量尽量不要用@public 2.          set方法 1)       作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤 2)       命名规范: 1> 方法名必须以set开头 2> set后面

【黑马程序员】————面向对象语法1

一.  面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 常用术语 面向过程 Procedure Oriented 面向对象 Object Oriented,简称OO 面向对象编程 Object Oriented Programming,简称OOP 二.  类和对象的关系 面向对象中有2个非常重要的概念:类和对象 OC中的面相对象 1)      OC中的类相当于图纸,用来描述一类事物.也就是说,要想创建对象,必须先有类 2)      OC

面向对象语法-02

接下来就在OC中模拟现实生活中的情况,创建一辆车出来.首先要有一个车子类,然后再利用车子类创建车子对象 定义OC的类和创建OC的对象 要描述OC中的类稍微麻烦一点,分2大步骤:类的声明.类的实现(定义).跟函数类似,函数有分声明和定义 类的声明 代码编写 定义一个Car类,拥有2个属性:轮子数.时速,1个行为:跑 类名\属性的命名规则:标示符的规则 类名的命名规范:有意义.驼峰标识.首字母大写 #import <Foundation/Foundation.h> // 类的声明 @interfa

MySql 语法细节补充

一.注释: 1.单行注释#开始到行结束. 2.多行注释/* ...  */. 二.数据库存在性判断: 1.例如:如果数据库存在则删除 drop database if exists 数据库名; 2.例如:如果数据库不存在则创建 create database if not exists 数据库名; MySql 语法细节补充,布布扣,bubuko.com

JavaScript语法细节——引用与复制

原文:JavaScript语法细节--引用与复制 我们都知道,JS中变量的赋值有两种方式,最近在折腾自己写的标签栏插件,碰到了很多平时没注意的问题.正好,那边处理清楚了,稍微整理一下关于引用与复制相关知识,可能会不定期增加新碰到的问题,有错误希望看到的人指出,避免传播不正确的知识. 先大致分一下类,引用类型:Object以及其旗下的Array,Date,RegExp,Function:基本包装类型:Boolean,number,String. 在赋值与传递参数的时候,引用类型传递的是指针,基本包

PHP 其他(非面向对象)语法细节

echo.print.print_r.printf.sprintf.var_dump.var_export的区别 1. echo echo 不是一个函数,而是一个语言构造器,因此可以不使用小括号来指明参数.另外它返回的是void,并不是值,所以不能使用它来赋值.当想给echo传递多个参数时,不能使用小括号(这样会报parse error),应该使用echo 'ab','cd';的形式(此时的输出为:abcd).接收的参数类型:string 1 <?php 2 // You can also us

《Java从入门到放弃》JavaSE入门篇:面向对象语法二(入门版)

想了半天,发现单独的封装和多态没什么好讲的,我们就简单说说Java里面对应的语法吧. 相关内容如下: 一.访问修饰符 二.getter/setter方法 三.构造方法 四.super和this 五.static关键字 六.final关键字 七.方法重写 八.抽象类和接口 一.访问修饰符 Java当中有四种情况,按其访问范围的顺序由小到大分别是: priate(私有)---->default(默认)---->protected(受保护)---->public(公共) 访问范围可以看下图:

OC中的面向对象语法

一. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 打开电脑 播放电脑中的歌曲 关闭电脑 b) 面向对象(不是相亲的“对象”) 电脑 ² 开机 ² 播放歌曲 ² 关机 2) 区别分析 面向过程关注的是解决问题需要哪些步骤:面向对象关注的是解决问题需要哪些对象 没有开发经验很难感受到它们的区别,两种思想都能达到解决问题的目的,但是解决思路不一样 想打电话\发短信 à