PHP对象基础实例分析


这篇文章主要介绍“PHP对象基础实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP对象基础实例分析”文章能帮助大家解决问题。面向过程和面向对象区别类:class,定义面向对象主体的最外层结构,用来包裹主体的数据和功能(函数)对象:object,某类事务的具体代表,又称为实例实例化:new,类产生对象的过程类成员:member方法:method,本质是在类class结构中创建的函数,称之为成员方法或者成员函数属性:property,本质是在类class结构中创建的变量,称之为成员变量类常量:const,本质是在类class结构中创建的常量创建对象注意:类常量不是由对象来进行访问在属性或者方法前的修饰关键字,用来控制属性或者方法的访问位置public:公有,类内和类外都可以访问protected:受保护,只允许在相关类内部访问private:私有,只允许在定义类内部访问属性必须有访问修饰限定符,方法可以没有访问修饰限定符,默认就是 public$this,方法内部内置的一个对象,会自动指向来调用的方法的对象$this 存在于方法内部(仅限内部使用),所以相当于在类的结构内部可以访问任意访问修饰限定符修饰的成员私有成员都是通过公有方法来实现访问(公有方法可以在类外部访问)$this 代表的是对象,而 $this 所在环境为类内部的方法内部,所以 $this 对象是在类内部访问,因此所有的属性和方法,不受访问修饰限定符限制__construct() 是一种系统内置的魔术方法,该方法的特性是在对象实例化之后,对象立即自动调用构造方法的目的就是为了初始化资源,包括对象属性和其他资源一旦构造方法定义好后,且构造方法自带参数,那么就只能使用 new 类名(参数列表) 方式才能正确实例化魔术方法也可以通过对象直接调用的方式调用,不过没有实际用处__destruct(),对象在被销毁时自动调用,释放资源对象销毁对象无变量指向(变量指向其他数据)对象被主动销毁(unset销毁对象变量)脚本执行结束(自动释放资源)PHP 脚本执行结束会释放所有资源,所以一般较少用析构方法定义:将保存对象的变量赋值给另外一个变量在 PHP 中,对象的传值是引用传递:即一个对象变量赋值给另外一个变量,两个变量指向同一个对象地址,即只有一个对象有两个冒号组成 “::” ,专门用于类实现类成员操作,可以实现类直接访问类成员范围解析操作符是用于给类(类名)访问类成员使用的范围解析操作符也可以被对象用来当作类使用(不建议)类常量只能被类访问类常量是固定的,而对象的属性是不同对象不同的定义:使用 static 关键字修饰的类成员,表示该成员属于类访问静态成员静态属性静态方法静态成员是明确用来给类访问的,而不是对象静态成员只是多了一个 static 关键字修饰,本身也可以被对象访问静态成员同样可以使用不同的访问修饰限定符限定,效果一致在类的内部(方法里面)使用,代替类名的写法self 如同 $this 代表内部对象一样,能够在方法内部代替当前类名能够保障用户方便修改类名字self 关键字是代替类名,所以需要配合范围解析操作符 ::类的访问必须保证类在内存中已经存在,所以需要再用类之前将类所在的 PHP 文件加载到内存中类的加载分为两种手动加载:在需要使用类之间通过 include 将包含类的文件引入到内存自动加载:提前定义好类结构和位置,写好引入类文件代码,在系统需要类而内存不存在的时候想办法让写好的加载类的代码执行(自动加载是自动运行写好的加载类的代码)自动加载两种方式自定义函数:自己定义类的加载实现,然后通过 spl_autoload_register 注册到自动加载机制(可注册多个自动加载)魔术函数 __autoload:系统自动调用,需要传入类名,在函数内部实现类的手动加载(PHP7及之后不建议使用此方法)自动加载要求在声明类的时候有良好的规范类名与文件名一致:类名.php 或者 类名.class.php类文件分类放好例:手动加载Article.phpmian.php自动加载__autoload(不建议使用)一个系统中,可能类文件会放到不同的路径下,因此一个完整的自动加载函数,应该要进行文件判定功能spl_autoload_register通过已有的对象复制一个新的同样的对象,但两者之间并非同一个对象封装、继承、多态类的封装类的继承inherit,子类合法拥有父类的某些权限继承必须满足继承关系:即存在合理的包含关系继承的本质是子类通过继承免费云主机域名可以直接使用父类已经存在的数据和数据操作PHP 使用 extends 关键字表示继承子类也称派生类父类也称基类类的多态多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果需要发生类的继承,同时出现方法的重写(override),即子类拥有与父类同名的方法在实例化对象的时候让父类对象指向子类对象(强制类型,PHP不支持,PHP 弱类型很灵活)结果:父类对象表现的子类对象的特点有限继承子类在继承父类的成员时,并非继承所有内容,而是继承并使用父类部分内容PHP 中继承的本质是对象继承PHP 中继承的内容:父类所有公有成员、受保护成员和私有属性,私有方法不能继承受保护(protected)成员专于继承,可以在父类或者子类内部访问私有成员的访问只能在所属类中设定公有或者受保护方法实现访问构造方法和析构方法可以被子类继承,override,子类中定义了与父类重名的成员一种明确访问父类成员的表达方式方法被重写后,访问调用的是子类方法,如果想要访问父类方法,可以通过在子类方法中使用 parent 来强制访问父类方法parent 不能用于访问父类的属性(静态属性可以)PHP 只能单继承,只有一个父类(若继承多个类,可以使用链式继承)PHP 继承中,只有私有方法不能继承PHP 允许继承父类中的构造方法和析构方法使用 final 关键字修饰类名,表示此类不可以被继承final 关键字还能修饰方法,表示方法不能被重写(通常此时类不会使用 final 关键字)使用 abstract 关键字修饰的类,表示该类只能被继承,不能被实例化abstract 关键字可以修饰方法,表示方法为抽象方法,抽象方法没有方法体(没有{})抽象方法存在的类必须为抽象类继承抽象类的类要么为抽象类,要么实现抽象类里所有的抽象方法适用于,不同类之间有公共代码,但是类彼此关系不存在继承关系,此时可以将公共代码存储到 trait 中trait 内部可以拥有一个类能拥有的成员属性(包括静态),成员方法(包括静态和抽象方法),但不能有类常量trait 用来代码复用,不能被实例化,不能被继承一个类中可能需要引入多个 trait ,而不同 trait 中可能出现同名Interface,专门用来规范一些共性类必须实现的方法接口不是类,但是与类有类似的结构接口不能实例化,类可以实现接口interface 接口名字{}class 类名 implements 接口名字{}接口成员接口成员只能有两类接口常量:const共有的接口方法(普通方法和静态方法)overload,指在一个类中可以出现多个同名方法,彼此之间的参数个数和类型不一样用来容错属性重载当对象访问不存在的或者权限不够的属性的时候,自动触发魔术方法让代码不出错属性重载魔术方法__get(属性名):访问不存在或者权限不够的属性时触发__set(属性名,属性值):设置不存在或者权限不够的属性时触发__isset(属性名):判定不存在或者权限不够的属性是触发__unset(属性名):删除不存在或者权限不够的属性时触发__tostring(): 当作字符串方法重载对象或者类访问不存在或者权限不够的方法,自动触发的魔术方法让代码不出错__cal(方法名,方法参数列表):调用不存在或者权限不够的方法时触发__callStatic(方法名,方法参数列表):调用不存在或者权限不够的静态方法时触发将对象中的所有属性以键值对的形式取出并进行访问对象是一种复合数据类型,对象中真正保存的内容是属性对象的属性本质也是一种键值对关系:名字 = 值对象遍历就是利用 foreach 对对象中的属性进行取出解析对象遍历遵循访问修饰限定符的限定:即类外只能遍历所有共有属性yield 关键字design pattern,是软件开发人员在软件开发过程中问题的解决方法单例模式singleton,是一种类的设计只会最多产生一个对象的设计思想保证资源唯一性工厂模式。。。。。。namespace,指人为的将内存进行分隔,让不同内存区域的同名结构共存,从而解决在大型项目能出现重名结构问题基础语法:namespace 关键字定义空间命名规则字母、数字、下划线,不能以数字开头命名空间必须写在所有代码之前,定义了一个,之后可以定义多个子空间subspace,即在已有空间之上,再在内部进行空间划分子空间直接通过 namespace+路径符号 实现非限定名称直接访问元素本身,代表当前所属空间(当前目录)限定名称使用空间名+原名,代表访问当前空间子空间(当前目录子目录)完全限定名称从根目录(全局空间)开始访问,使用 作为全局空间开始符号(根目录)全局空间元素访问:使用完全限定名称访问命名空间引入关于“PHP对象基础实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: es6箭头函数有哪些优点

本篇内容介绍了“es6箭头函数有哪些优点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! es6箭头函数的优点:1、简明的语法,例“parameters =&gt…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/10 16:15
下一篇 01/10 16:15

相关推荐