We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在PHP5中新增加了final关键字,它只能用来修饰类和方法.不能使用final这个关键字来修饰成员属性.
static关键字表示静态的意思,用于修饰类的成员属性和成员方法(即静态属性和静态方法).
类中的静态属性和方法不用实例化(new)就可以直接使用类名访问
格式: 类::静态属性 类::静态方法
在类的方法中。不能使用this来引用静态变量或静态方法,而需要用self来引用
格式:self::静态属性 self::静态方法
const是在一个类中定义常量的关键字,我们都知道在PHP中定义常量使用的是“define()”这个函数,但是在类里面定义常量使用的是“const”这个关键字。
const CONSTANT = "constant value"; //定义 echo self ::CONSTANT //类内部访问 echo className::CONSTANT //类外部访问
instanceof关键字用于检测当前对象实例是否属于某一个类或者这个类的子类。
PHP5当new实例化一个不存在的类时,则自动调用此函数__autoload(),并将类名作为参数传入此函数。可以使用这个实现类的自动加载。
格式:bool class_exists(String $class_name[,bool $autoload])
如果由class_name所指的类已经定义,此函数返回TRUE,否则返回FALSE。
默认将会尝试调用__autoload,如果不想让class_exists()调用__autoload,可以将autoload参数设为FALSE。
格式:string get——返回对象的类名
返回对象实例obj所属类的名字。如果obj不是一个对象则返回FALSE
格式:array get_object_vars(Object $obj)
返回由obj指定的对象中定义的属性组成的关联数组。
格式:string get_parent_calss([mixed $obj])
如果obj是对象,则返回对象实例obj所属类的父类名
格式:bool is_a(object $object , string $class_name)
我们可以使用运算符:instanceof代替上面的is_a操作。
当我们用echo输出一个引用对象的时候,会报错,如果在类中提供__toString方法,就不会产生错误,而自动调用__toString方法,输出__toString方法中返回的字符串,所以__toString方法一定要有个返回值(return语句)
class Test{ public function __toString(){ return "hello"; } } $test = new Test(); echo $test; //hello
根据一个对象完全可克隆出一个一模一样的对象,是非常有必要的,而且克隆以后,两个对象互不干扰。
class Test{ public $name = "wang"; } $t1 = new Test(); $t2 = clone $t1; $t2 -> name = "chong"; echo $t1 -> name;
有时候需要吧一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程就叫做序列化(串行化)
class Test{ public $name = "wang"; public function say(){ return "hello"; } }; $test = new Test(); $testString = serialize($test); echo $testString; $untest = unserialize($testString); echo $untest -> name; //wang
当对象进行序列化的时候,调用类中的__sleep()方法,这个方法返回一个数组,数组中包含对象的属性,串行化只串行属猪中包含的属性,未被包含的则在串行化的时候被忽略,如果没有__sleep()方法,PHP将保存所有属性。
当对象进行反序列化的时候,调用类中的__wakeup()方法。
class Test{ public $name = "wang"; public $age = 18; public $sex = "nan"; public function __sleep(){ $arr = array('name','age'); return $arr; } public function __wakeup(){ $this -> age = 20; } } $test = new Test(); $testString = serialize($test); echo $testString; $test1 = unserialize($testString); echo $test1 -> age ; //20
在软件开发过程中,不可能把所有的类都写在一个php文件中,当一个文件调用另一个文件的时候就需要用include或者require,有时候一一导入所需要的类的php文件是一个很头疼的问题,所以__aotuload可以完成一个自动加载类,实现按需加载的形式。
在PHP5中,可以定义一个__autoload函数,它会在视图使用尚未被定义的类时自动调用,通过调用次函数,脚本引擎在PHP出错失败前有个最后一次机会加载所有的类,__autoload()函数接受一个参数,就是想要加载的类名,通过拼接前缀或者后缀实现按需加载类.
function __autoload($className) { require_once $className.".php"; } try{ $obj = new php1(); }catch(Exception $e){ echo $e ->getMessage(); }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
final关键字
在PHP5中新增加了final关键字,它只能用来修饰类和方法.不能使用final这个关键字来修饰成员属性.
final的特性
目的
static关键字
static关键字表示静态的意思,用于修饰类的成员属性和成员方法(即静态属性和静态方法).
类中的静态属性和方法不用实例化(new)就可以直接使用类名访问
在类的方法中。不能使用this来引用静态变量或静态方法,而需要用self来引用
特点
const关键字
const是在一个类中定义常量的关键字,我们都知道在PHP中定义常量使用的是“define()”这个函数,但是在类里面定义常量使用的是“const”这个关键字。
instanceof关键字
instanceof关键字用于检测当前对象实例是否属于某一个类或者这个类的子类。
自动加载类
PHP5当new实例化一个不存在的类时,则自动调用此函数__autoload(),并将类名作为参数传入此函数。可以使用这个实现类的自动加载。
class_exists---检查类是否已定义
如果由class_name所指的类已经定义,此函数返回TRUE,否则返回FALSE。
默认将会尝试调用__autoload,如果不想让class_exists()调用__autoload,可以将autoload参数设为FALSE。
get_class ---返回对象的类名
返回对象实例obj所属类的名字。如果obj不是一个对象则返回FALSE
get_object_vars--返回由对象属性组成的关联数组
返回由obj指定的对象中定义的属性组成的关联数组。
get_parent_class -- 返回对象或类的父类名
如果obj是对象,则返回对象实例obj所属类的父类名
is_a ---如果对象属于该类或该类是此对象的父类则返回TRUE
我们可以使用运算符:instanceof代替上面的is_a操作。
__toString
当我们用echo输出一个引用对象的时候,会报错,如果在类中提供__toString方法,就不会产生错误,而自动调用__toString方法,输出__toString方法中返回的字符串,所以__toString方法一定要有个返回值(return语句)
clone
根据一个对象完全可克隆出一个一模一样的对象,是非常有必要的,而且克隆以后,两个对象互不干扰。
对象序列化
有时候需要吧一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程就叫做序列化(串行化)
对象序列化的两种情况
两个过程
__sleep()和————wakeup
当对象进行序列化的时候,调用类中的__sleep()方法,这个方法返回一个数组,数组中包含对象的属性,串行化只串行属猪中包含的属性,未被包含的则在串行化的时候被忽略,如果没有__sleep()方法,PHP将保存所有属性。
当对象进行反序列化的时候,调用类中的__wakeup()方法。
__autoload()
在软件开发过程中,不可能把所有的类都写在一个php文件中,当一个文件调用另一个文件的时候就需要用include或者require,有时候一一导入所需要的类的php文件是一个很头疼的问题,所以__aotuload可以完成一个自动加载类,实现按需加载的形式。
在PHP5中,可以定义一个__autoload函数,它会在视图使用尚未被定义的类时自动调用,通过调用次函数,脚本引擎在PHP出错失败前有个最后一次机会加载所有的类,__autoload()函数接受一个参数,就是想要加载的类名,通过拼接前缀或者后缀实现按需加载类.
The text was updated successfully, but these errors were encountered: