接口中所有的方法都是抽象的,没有程序体。 接口的方法必须被全部实现,否则将报错。
抽象类里可以包含公共方法和抽象方法,抽象的方法必须被实现。 抽象类不能实例化,普通类可以继承抽象类。 建议仅在部分 "内核" 代码中使用接口,从语义上考虑,可以更多的使用抽象类。
静态变量属于类,而不属于类的某个实例。这个变量对所有实例都有效。
::是作用域限定操作符,这里用的是self作用域,而不是$this作用域,$this作用域只表示类的当前实例,self::表示的是类本身。
静态变量在类中也可以用$this->调用 ,但是这样的赋值 用类::获取不到值;即使在本类中通过self::也获取不到。但是在本类中可以用$this->获取到值
类中static::后只能const或者static变量
static 关键字,这里作为作用域引用。类似于parent, self等关键字。与parent和self不同的是,parent 引用的是父类作用域,self引用的是当前类的作用域,而static引用的是全部静态作用域,子类会覆盖父类
一般认为在c中分为这几个存储区: 1. 栈 -- 有编译器自动分配释放 2. 堆 -- 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3. 全局区(静态区) -- 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束释放。 4. 另外还有一个专门放常量的地方。 程序结束释放
当然不可以,父类可以直接共享子类的成员值
private public protected 方法都可以在本类中被调用
public 方法可以被实例对象调 private protected不可以被实例对象调用
public protected方法 可以被子类的方法调用 private 方法不可以被子类中的方法调用
private public protected 属性都可以在本类中被调用
public 属性可以被实例对象调,private protected 不可以被类的实例调用
public protected可以被子类调用,private不可以被子类调用
子类中方法的访问权限一定不能低于父类被覆盖方法的访问权限,也就是一定要高于或等于父类方法的访问权限。 例如,如果父类方法的访问权限是protected,那么子类中要覆盖的权限就要是protected和public,如果父类的方法是public那么子类中要覆盖的方法只能也是public,总之子类中的方法总是要高于或等于父类被覆盖方法的访问权限。
类中的const成员 可以用::符调用,既可以被对象调用 ,也可以用类名调用 ,类中定义的static变量 也可以用相同的方式调用
http://hi.baidu.com/shooke1/item/05a52c3c72be52f6a884288e
网上是如下说法,但是还没有证明过是否说的是正确的。
在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。 另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。
返回对象实例 obj 所属类的名字。如果 obj 不是一个对象则返回 FALSE。
后期静态绑定("Late Static Binding")类的名称 获取静态方法调用的类名。
返回由类的默认公有属性组成的关联数组,此数组的元素以 varname => value 的形式存在。
返回由 class_name 指定的类中定义的方法名所组成的数组。如果出错,则返回 NULL。
返回由 obj 指定的对象中定义的属性组成的关联数组。
__call 当要调用的方法不存在或权限不足时,会自动调用__call 方法。
__callStatic 当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。
?当调用静态方法不存在时 是否会启动__call ?当调用静态方法权限不足时 是否会启动__call
该函数允许用户调用直接写(并非在类中定义的函数)的函数并传入一定的参数
?
PHP中方法不区分大小写,包括魔术方法也不区分大小写
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();
自定义错误处理句柄
rigger_error() 函数创建用户定义的错误消息
error_log() 函数向服务器错误记录、文件或远程目标发送一个错误。
此函数会在PHP程序终止或者die时触发一个函数,给PHP带来一个短暂的回光返照。
"instanceof"操作符的使用非常简单,它用两个参数来完成其功能。 第一个参数是你想要检查的对象,第二个参数是类名(事实上是一个接口名),用于确定是否这个对象是相应类的一个实例。它的基本语法如下: if (object instanceof class name){//继承关系 // }
stdClass类是PHP的一个内部保留类,初始时没有成员变量也没成员方法,所有的魔术方法都被设置为NULL