PHP学习笔记-2(类与对象)
来源:互联网 发布:反美颜软件ios 编辑:程序博客网 时间:2024/06/05 07:07
1、类
类中有 属性、方法、构造析构函数、静态变量(static)、常量(const)
还有一些特殊的方法
1.1类的定义
//类的定义:class Test{ private $a; //private protected public(默认) const PI = 3.14 //常量,不需要写 "$" static $b = 5; //静态变量,要写 "$" function __construct($a) //构造函数,不支持重载 { $this->$a; //方法内部可以用$this,这里 $a 的 $可省略, } function Test(){} //php4的构造函数,兼容,但优先选择__construct(),没有时才找Name(); function __destruct(){} //析构函数,释放自己分配的资源}$obj = new Test();$obj->newProperty ="" //对象的属性可动态扩展(类python)Test::PI;Test::$b;
1.2 类的特殊关键字、符号、函数:
$this //在类方法内部,代表对象本身self //在类内部,代表 类本身,而不是对象本身。常用于访问 静态变量, self::var;:: //作用域符,用于访问 类常量、静态变量-> //对象访问属性、调用方法parent //指向父类的引用=== //对象引用是否相等== //对象 的属性值相等,且是同一个类的实例,则返回true
1.3 类方法的覆盖和重载
//php中不支持直接重载,但可用call间接实现重载//php中创建对象时,若子类有自己构造函数,则不会隐式调用父类的构造函数(自己parent::__construct()调用)//若没有,则继承一个父类的构造函数并调用(调用父类的构造函数)。//
1.4类的魔术方法 (特殊方法):
__construct() //构造函数__destruct() //当销毁一个对象被调用。 __set() //__set($name, $value) 对私有属性赋值时,会调用__get() //__get($name) 取私有属性 值时调用__call() //__call($name,$args);对象调用某个方法,若存在直接调用。不存在时调用__callStatic()__toString() //对象被当做string用时调用。PHP5.2 之前只有在直接使用于 echo 或 print 时才能生效。PHP 5.2.0 之后,则可以在任何字符串环境生效__clone() //__clone(),克隆对象时被调用。如:$t=new Test();$t1= $t; __invoke() //把对象当做函数调用时,自动调用invoke([args...])__autoload() //__autoload($classname).实例化一个对象时,如果对应的类不存在,则该方法被调用。通常在方法中 require_once($classname),导入文件__isset() //php中有一个isset($name)方法,检测是否已经定义变量(不是Null),当对私有属性 调用 isset()时,会调用__isset($obj->$name)__unset() //unset一个对象的属性时被调用。如:unset($obj->name)。__sleep() //用于序列化。serialize() 函数会检查类中是否有 __sleep()。如果有,会先调用,然后才执行序列化操作__wakeup() //与之相反,unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法static __set_state() //5.1.0 起当调用 var_export() 导出类时调用.var_export($var)是返回
1.4 抽象类和抽象方法
//抽象类不能实例化//包含抽象方法的类一定是 抽象类//抽象类不一定 有 抽象方法abstract class ABC{ abstract function F();}
1.5 类的继承
//非常重要:子类中若没有覆盖父类的,则访问的都是父类的,若子类中覆盖了父类的,则访问的是子类的,必须parent::才能显示访问父类被覆盖的内容。//另: 覆盖不能是 更 严格 访问权限class Father{ function __construct() { echo "Father is Creating "; }}//继承关键字 extendsclass Son extends Father{ function __construct() {//因为父子类的构造函数 同名,实际上是覆盖了父类的构造方法 //parent::__construct(); echo "Son is Creating "; }}$s = new Son() //输出的 是 Son is Creating//看了网上一些博客,我自己的理解是://PHP创建子类时,创建一个父类对象。//当子类覆盖了构造函数时,调用子类构造函数,系统对父类数据初始化(并不通过构造函数)//当子类没有构造函数时候,调用父类的构造函数。
0 0
- PHP学习笔记-2(类与对象)
- php学习笔记 类的声明与对象实例化
- php学习笔记--3. 抽象类 与 对象接口
- PHP学习笔记(三)类与面向对象
- PHP学习笔记(六):类与对象
- php学习笔记十:类与对象-基础
- Java学习笔记(2): 类与对象
- PHP入门学习笔记之—— PHP 类与对象 (上)
- PHP入门学习笔记之—— PHP 类与对象 (中)
- PHP入门学习笔记之—— PHP 类与对象 (下)
- PHP学习笔记 (类和对象)
- php类面向对象学习笔记
- PHP学习笔记11:类和对象
- PHP学习笔记之显示数组与对象示例
- PHP学习之四:类与对象
- PHP新手之学习类与对象
- PHP学习笔记--面向对象
- php面向对象学习笔记
- Linux awk 命令
- iframe实现局部刷新和回调-- 文件上传
- 第十四章 -------SSL
- Linux 时钟管理
- pod spec的创建及其使用
- PHP学习笔记-2(类与对象)
- openwrt编译总结
- UIAlertController 提示框简单封装
- JSP 语法
- 第十五章 -------单点登录
- 异常管理 - try-catch-finally异常信息丢失
- 米老师讲 ITOO4.1 ——Java
- 常见的TSO ISPF命令
- Spring 69题