PHP基本概念

接口和抽象类的区别

接口中所有的方法都是抽象的,没有程序体。 接口的方法必须被全部实现,否则将报错。

抽象类里可以包含公共方法和抽象方法,抽象的方法必须被实现。 抽象类不能实例化,普通类可以继承抽象类。 建议仅在部分 "内核" 代码中使用接口,从语义上考虑,可以更多的使用抽象类。

静态变量

静态变量属于类,而不属于类的某个实例。这个变量对所有实例都有效。

::是作用域限定操作符,这里用的是self作用域,而不是$this作用域,$this作用域只表示类的当前实例,self::表示的是类本身。

静态变量在类中也可以用$this->调用 ,但是这样的赋值 用类::获取不到值;即使在本类中通过self::也获取不到。但是在本类中可以用$this->获取到值

Static::

类中static::后只能const或者static变量

static 关键字,这里作为作用域引用。类似于parent, self等关键字。与parent和self不同的是,parent 引用的是父类作用域,self引用的是当前类的作用域,而static引用的是全部静态作用域,子类会覆盖父类

栈和堆

一般认为在c中分为这几个存储区: 1. 栈 -- 有编译器自动分配释放 2. 堆 -- 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3. 全局区(静态区) -- 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束释放。 4. 另外还有一个专门放常量的地方。 程序结束释放

父类可以调用子类中的特有方法吗?

当然不可以,父类可以直接共享子类的成员值

private public protected 方法的区别

private public protected 方法都可以在本类中被调用

public 方法可以被实例对象调 private protected不可以被实例对象调用

public protected方法 可以被子类的方法调用 private 方法不可以被子类中的方法调用

private public protected 属性的区别

private public protected 属性都可以在本类中被调用

public 属性可以被实例对象调,private protected 不可以被类的实例调用

public protected可以被子类调用,private不可以被子类调用

关于继承

子类中方法的访问权限一定不能低于父类被覆盖方法的访问权限,也就是一定要高于或等于父类方法的访问权限。 例如,如果父类方法的访问权限是protected,那么子类中要覆盖的权限就要是protected和public,如果父类的方法是public那么子类中要覆盖的方法只能也是public,总之子类中的方法总是要高于或等于父类被覆盖方法的访问权限。

Const

类中的const成员 可以用::符调用,既可以被对象调用 ,也可以用类名调用 ,类中定义的static变量 也可以用相同的方式调用

Const与static变量的区别

http://hi.baidu.com/shooke1/item/05a52c3c72be52f6a884288e

self、$this操作符的区别

网上是如下说法,但是还没有证明过是否说的是正确的。

在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。 另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。

ReflectionClass

ReflectionObject

get_class

返回对象实例 obj 所属类的名字。如果 obj 不是一个对象则返回 FALSE。

get_called_class

后期静态绑定("Late Static Binding")类的名称 获取静态方法调用的类名。

get_class_vars

返回由类的默认公有属性组成的关联数组,此数组的元素以 varname => value 的形式存在。

get_class_methods

返回由 class_name 指定的类中定义的方法名所组成的数组。如果出错,则返回 NULL。

get_object_vars

返回由 obj 指定的对象中定义的属性组成的关联数组。

__call 与 __callStatic

__call 当要调用的方法不存在或权限不足时,会自动调用__call 方法。

__callStatic 当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。

?当调用静态方法不存在时 是否会启动__call ?当调用静态方法权限不足时 是否会启动__call

call_user_func

该函数允许用户调用直接写(并非在类中定义的函数)的函数并传入一定的参数

Token函数

大小写

PHP中方法不区分大小写,包括魔术方法也不区分大小写

Traits

trait Hello{
   public function sayHello(){
      echo 'Hello ';
   }
}
trait World{
   public function sayWorld(){
      echo 'World';
   }
}

class MyHelloWorld{
  use Hello,World;
  public function sayExcalamationMark(){
      echo '!';
  }
}

$o=new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExcalamationMark();

set_error_handler()

自定义错误处理句柄

trigger_error()

rigger_error() 函数创建用户定义的错误消息

error_log()

error_log() 函数向服务器错误记录、文件或远程目标发送一个错误。

register_shutdown_function()

此函数会在PHP程序终止或者die时触发一个函数,给PHP带来一个短暂的回光返照。

instanceof

"instanceof"操作符的使用非常简单,它用两个参数来完成其功能。 第一个参数是你想要检查的对象,第二个参数是类名(事实上是一个接口名),用于确定是否这个对象是相应类的一个实例。它的基本语法如下: if (object instanceof class name){//继承关系 // }

stdClass

stdClass类是PHP的一个内部保留类,初始时没有成员变量也没成员方法,所有的魔术方法都被设置为NULL

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券