本文主要介绍《PHP对象基本实例分析》的相关知识。 小编将通过实际案例为您展示操作流程。 操作方法简单、快捷、实用。 希望这篇《PHP对象基本实例分析》这篇文章能够帮助您解决问题。
面向对象基础知识
面向过程和面向对象之间的区别
面向对象关键字
创建对象
# 输出object(People)#1 (0) { } #1表示:对象编号,与类无关,是整个脚本中对象的序号(0)表示:成员变量(属性)个数{}表示:具体成员变量信息(键值对)
类对象
<?phpclass Buyer{ # 常量声明 const BIG_NAME='BUYER'; # 常量不需要加 $ # 属性声明 # $name; # 错误的,类内部属性必须使用访问修饰限定符 public $name; public $money=0; # 方法声明 function display(){ echo __CLASS__; # 魔术常量,输出类名 # 方法内部变量属于局部变量 }}# 实例化$a = new Buyer();# 属性操作,增删改查echo $a->money;$a->money='20';$a->sex='male';unset($a->name);echo '
';# 方法操作$a->display();echo '
';var_dump($a);?> # 输出0Buyerobject(Buyer)#1 (2) { ["money"]=> string(2) "20" ["sex"]=> string(4) "male" }
注意:类常量不能被对象访问
属性或方法之前的修饰关键字用于控制属性或方法的访问位置
属性必须有访问修饰符,方法可以没有访问修饰符,默认是public
类内部对象
$this,方法内外的一个对象,会以调用的方式手动指向该对象
$this存在于方法内部(仅供内部使用),因此相当于类结构内部
# 输出object(Article)#1 (2) { ["name:protected"]=> string(1) "a" ["type:private"]=> string(3) "art" }
$this代表一个对象,而$this所在的环境是在类内部,所以$this对象是在类内部访问的php 创建对象,所以所有的属性和技巧都不受访问修饰符限定符的限制
施工方法
name = $name; $this->sex = $sex; }}$a = new Article('xiaowang', 'famale');var_dump($a);?>
销毁方法
# 不销毁对象,php在运行结束也会释放资源# end__destruct
按值对象
定义:将对象的可变参数保存到另一个变量中
在PHP中,对象按值传递就是按引用传递:即一个对象变量形参传递给另一个变量,且两个变量指向同一个对象地址,即只有一个对象
<?phpclass Article{ public $name = 'xiaoli'; public $sex = 'famale';}$a=new Article();$b=$a;var_dump($a,$b);echo '
';$a->name="wangxiaohu";var_dump($a,$b);echo '
';?> # 输出object(Article)#1 (2) { ["name"]=> string(6) "xiaoli" ["sex"]=> string(6) "famale" } object(Article) #1 (2) { ["name"]=> string(6) "xiaoli" ["sex"]=> string(6) "famale" }object(Article) #1 (2) { ["name"]=> string(10) "wangxiaohu" ["sex"]=> string(6) "famale" } object(Article) #1 (2) { ["name"]=> string(10) "wangxiaohu" ["sex"]=> string(6) "famale" }
范围解析运算符(类常量访问)
有两个逗号组成“::”,专门用于类实现类成员操作php 创建对象,可以实现对类成员的直接访问
NAME 来进行访问的$a=new Article();echo $a::NAME; # 范围解析操作符兼容对象,找到对象所属类最终进行访问,效率降低,灵活性提高?>
类常量是固定的,而不同对象的对象属性是不同的
静态成员
定义:用static关键字修饰的类成员,表明该成员属于类访问
静态成员显式用于访问类,而不是对象
静态成员只是用static关键字修饰,也可以被对象访问
静态成员也可以使用不同的访问修饰符进行限定,具有相同的效果
自我关键字
# 输出object(Article) #1 (0) { } object(Article) #2 (0) { }
类加载
类的访问必须保证该类已经存在于显存中,因此在使用该类之前需要将该类所在的PHP文件加载到显存中
自动加载两种表单
function __autoload($classname){ # 找到对应的文件路径和命名规范,手动加载}
# 自定义类加载函数function 自定义函数($classname){ # 找到对应的文件和命名规范,手动加载}#注册自动加载sql_autoload_register('自定义函数名字')
自动加载在声明类时需要良好的约定
示例:手动加载
文章.php
<?phpclass Article{ public function getName(){ return __METHOD__; }}
面.php
getName()); # outputstring(16) "Article::getName"
自动加载
在一个系统中,类文件可能会放在不同的路径下,所以一个完整的手动加载函数应该执行文件判断功能
<?php function __autoload($classname){ # 形参代指 类名 #组织文件路径,假设当前路径下,有两个文件夹下都有类c和类m $c_file = 'c/' . $classname . '.php'; if (file_exists($c_file)) { include_once($c_file); return true; } //if 语句如果只有一行不需要加 {} //include_once 只加载一次 $m_file = 'm/' . $classname . '.php'; if (file_exists($m_file)) { include_once($m_file); return true; } } $a=new Article(); $b=new Article();
<?phpfunction autoload01($classname){ if(!class_exists($classname)){ $file_name=$classname.'.php'; if(file_exists($file_name)) include_once $file_name; }}spl_autoload_register('autoload01');$a=new Article();
对象克隆
通过现有对象复制新的相同对象,但两者不是同一个对象
面向对象中级面向对象的三个特点
封装、继承、多态
类封装
类继承
继承,子类合法拥有父类的个别权限
派生类
泛型
# 父类class Human{}# 子类继承class Man extends Human{}
类多态性
多态性是指同一个操作或函数或过程可以作用于多种类型的对象并获得不同的结果
——PHP继承——
show();
有限继承
子类继承父类的成员时,并不是继承全部内容,而是继承并使用父类的部分内容
覆盖 覆盖
覆盖,子类中定义了与父类同名的成员
父关键字
显式访问父类成员的表达形式
方法重绘后,调用基类方法进行访问。 如果想访问父类方法,可以通过泛型方法中使用parent来强制访问父类方法
Parent 不能用于访问父类的属性(静态属性可以)
PHP 继承特性静态后期绑定
期末班 期末班
使用final关键字修饰类名,表示这个不能被继承
Final关键字可以修饰方法,并且表示方法不能重绘(通常类此时不会使用final关键字)
抽象类Abstract
用abstract关键字修饰的类,意味着该类只能被继承,不能被实例化
Abstract关键字可以修饰方法,表示方法是具体的,抽象方法没有方法体(没有{})
抽象方法所在的类必须是抽象类
继承抽象类的类要么是抽象类,要么实现了抽象类中的所有具体方法
特征代码重用
适用,不同类之间有公共代码,但类之间没有继承关系,此时可以将公共代码存储在trait中
特征可以具有类可以具有的成员属性(包括静态)和成员方法(包括静态和抽象方法),但不能具有类常量
特征用于代码重用,不能实例化或继承
同名特征
一个类可能需要引入多个trait,并且不同的trait可能具有相同的名称
界面
接口,专门用于标准化一些公共类必须实现的方式
接口 接口名称 {}
class 类名 实现接口名 {}
接口成员
接口成员只能有两种类型
PHP 重载
重载是指一个类中可以出现多个同名的方法,并且它们之间的参数数量和类型不同
为了容错
属性重载
当对象访问不存在或权限不足的属性时,会自动触发魔术,使代码不会出错
属性重载魔术
方法重载
对象或类访问的方法不存在或权限不够,自动触发的魔术让代码不出错
对象遍历
以通配符对的形式取出并访问对象中的所有属性
迭代器迭代器
建设者
产量关键字
设计模式
设计模式是软件开发人员在软件开发过程中解决问题的方式
单例模式
Singleton是一种只能形成至多一个对象的设计思想的设计
保证资源唯一性
工厂模式
。 。 。 。 。 。
命名空间
命名空间是指人为地分离显存,使不同显存区域的同名结构可以共存,从而解决小项目中重名结构的问题
基本句型:
关键字namespace定义了一个空格
命名规则
字母、数字、下划线、不能以数字开头
命名空间必须写在所有代码之前,定义一个,然后可以定义多个
子空间
子空间,即在现有空间之上,然后定义里面的空间
子空间直接通过命名空间+路径符号来实现
不合格名称
直接访问元素本身,代表当前空间(当前目录)
合格名称
使用空间名+原名表示访问当前空间子空间(当前目录的子目录)
完全限定名称
从根目录(全局空间)开始访问,使用作为全局空间(根目录)的开始符号
全局空间元素访问:使用完全限定名称访问
命名空间导入
《PHP对象基础实例分析》的介绍到此结束,感谢您的阅读。 如果您想了解更多行业相关知识,可以关注易速云行业资讯频道,小编每晚都会为您更新不同的知识点。