联系电话:0411-66373325
联系地址:大连市沙河口区富民广场
公司邮箱:2058793689@qq.com
备案信息:Copyright © 2016-2025,www.my249.com,All rights reserved
|
249建站之家:PHP学习笔记// 析构方法 - 析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。 void __destruct( void ) # 作用:释放对象所占用的资源 # 调用的时机 - 脚本结束时所有资源均被释放,包括对象 - 手动删除对象时 - 保存对象的变量被赋予新值时(任何值,包括null) - 在使用exit()终止脚本运行时也会被调用 // 静态成员(static关键字) - 声明类成员或方法为static,就可以不实例化类而直接访问。 - 静态成员(属性或方法)均属于类,故不能通过$this或->访问。 - 静态成员是所有对象共享,属于类。 - 静态成员用类调用,非静态成员用对象调用。 # 静态属性 - 静态属性不可以由对象通过->操作符来访问。 - 静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。 所以你可以把静态属性初始化为整型或数组,但不能指向另一个变量或函数返回值,也不能指向一个对象。 # 静态方法 - 由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。 - 用::方式调用一个非静态方法会导致一个E_STRICT级别的错误。 // 访问解析操作符(::) - 可以用于访问静态成员、方法和常量,还可以用于覆盖类中的成员和方法。 - 当在类的外部访问这些静态成员、方法和常量时,必须使用类的名字。 - self 和 parent 这两个特殊的关键字是用于在类的内部对成员或方法进行访问的。 // 访问辨析 - 对象成员,内部通过$this指定,外部通过对象名指定,均用->访问,访问属性时不需加$。 对象名->属性名 对象名->方法名() $this->属性名 $this->方法名() - 类成员,内部通过self或parent指定,外部通过类名指定,均用::访问,访问属性时需加$。 类名::$属性名 类名::方法名() self::$属性名 self::方法名() - 特殊:也可以通过对象访问类成员。(不建议) 对象名::$类属性名 $this::$类属性名 对象名::$类方法名() $this::类方法名() # 对象成员访问用->,类成员访问用:: - 无论是静态方法还是非静态方法,均可通过类或对象进行访问。 - 静态属性通过类访问,静态方法通过对象访问。 - 只有使用对象调用非静态方法时,$this才可以使用! - 静态方法不可使用$this。 - 类可以调用对象方法,但注意方法内不能有$this。 - 非静态方法可以调用静态属性或静态方法,反之不可以。 // 类常量 - 常量的值将始终保持不变。 - 在定义和使用常量的时候不需要使用$符号。 - 常量的值必须是一个定值,不能是变量,类属性或其它操作(如函数调用)的结果。 # 定义:const 常量名 = 常量值; - 不需要加public等访问修饰限定符 - 类常量属于类,使用类访问,类名::类常量 或 self::类常量 // 自动加载对象 - 在试图使用尚未被定义的类时自动调用 __autoload 函数 - 自动加载使用到的类名文件(根据类名找相应名称的文件,故需类名与类文件名一致) - 每个需要加载类的文件都需要存在__autoload函数 - 将__autoload函数写入单独的文件,每个需要用到类的文件再require该函数文件 - __autoload 参数是类名 function __autoload($class_name) { require_once $_SERVER["DOCUMENT_ROOT"] . "/class/$class_name.php"; } // $_SERVER["DOCUMENT_ROOT"] 当前运行脚本所在的文档根目录 - 可以通过类名,来推导出类所在的文件名! - 如果一个项目存在多个自动加载函数时,定义一个可以完成加载的普通函数,并在函数之前使用spl_autoload_register注册该函数。 # spl_autoload_register - 注册__autoload()函数 bool spl_autoload_register ([ callback $autoload_function ] ) - 可以注册多个自动加载函数,先注册的先执行 - 一旦注册自动加载函数,__autoload就失效。 - 注册函数时,参数为函数名(注意加引号);注册方法时,参数为数组 # 注册类或对象的方法为自动加载方法时,参数需为数组: spl_autoload_register(array(__CLASS__, '__autoload')); __CLASS__表示当前类名,若是对象可用$this,详细见手册 |