php基础教程 第十一步 面向对象
面相对象
面向对象程序设计简称OOP(Object-oriented programming)。是一种类型的抽象,或者说是一种类型以编码的方式进行描述。概念上理解并不能直观的说明问题,以下将会有示例为读者直观的感受面向对象。
类代表一个类别,例如人、车子、动物、液体都属于一个类,在php中我们用class表示一个类。 对象指这一个类的实例化,例如人这一个类,有一个具体,如小明是一个人类,小明就是这一个类别的具体;动物也是一个类,对象可以为猴子,猩猩,马等;液体也是一个类,水属于液体这一个类别,牛奶也属于液体这一个类别。 成员函数一般指这一个类中的一些属性,例如人这个类别,有年龄、身高、性别、头发等这一些属性;液体有颜色、密度等属性。 子类指一个父类的派生,也就是人这一个类属于动物,动物这一个类别就是人类的父类,人类这一个类别指动物的子类。 父类是一个类的父亲,以上以说明。 类方法可以指类里面的一些接口动作,例如人可以吃饭、人可以走路等。
一个最为简单的面向对象示例
接下来看一下一个简单的类定义:
<?php
class Human {
public $sex;
public $hair;
}
?>
以上使用class 这个关键字定义了一个Human类,Human是一个类的名称,就跟函数名称一样可以自己设置,Human的意思为人,这里定义的是一个人的类别。人的属性有名字和年龄,在类名后的花括号中,编写了 public sex; 与 public hair;方法,public 是对变量以及方法的修饰,表示这个变量或者方法是公开的。就像你的性别,外人可以从外貌上分表你是男是女,这些属性是公开的,可以使用public进行修饰。除了public方法可以修饰公开的属性或者方法外,还可以使用private 修饰一些私有的方法,例如你的胃消化的方法,只有你自己可以调用,外人是使用不了,这个方法可以使用private进行修饰(当然,这个比喻并不是很好的说明这个问题,接下来将会用示例进行说明)。 以下示例将Human这个类进行实例化:
$Xiaoming=new Human();
这个时候只是实例化了这个类,$Xiaoming 就是Human这个类的对象。我们可以为这个对象设置值。设置值需要添加一些方法:
<?php
class Human {
public $sex;
public $hair;
public function set_Sex($val){
$this->sex=$val;
}
public function set_Hair($val){
$this->hair=$val;
}
}
$Xiaoming=new Human();
?>
以上代码中 public function set_Sex 定义了一个函数,函数名为 set_Sex,使用了public进行修饰,表示这个函数可以直接调用;这个函数接收一个参数,参数名为 val。在set_Sex 函数的花括号中,代码为 this->sex=val;,this为当前对象,指当前类,->表示一个指向,this->sex就为当前类中的sex成员属性(变量),赋值为传入的
<?php
class Human {
public $sex;
public $hair;
public function set_Sex($val){
$this->sex=$val;
}
public function set_Hair($val){
$this->hair=$val;
}
}
$Xiaoming=new Human();
$Xiaoming->set_Sex('nan');
$Xiaoming->set_Hair('y');
?>
以上代码中使用对象 Xiaoming 用箭头-> 运算符调用 set_Sex 函数,并且传入了一个值为 nan(男女的拼音):
<?php
class Human {
public $sex;
public $hair;
public function set_Sex($val){
$this->sex=$val;
}
public function set_Hair($val){
$this->hair=$val;
}
public function get_Sex(){
return $this->sex;
}
public function get_Hair(){
return $this->hair;
}
}
$Xiaoming=new Human();
$Xiaoming->set_Sex('nan');
$Xiaoming->set_Hair('y');
echo $Xiaoming->get_Sex();
echo ' ';
echo $Xiaoming->get_Hair();
?>
以上代码中,使用 get_Sex() 方法获取性别,使用 get_Hair 获取是否有头发。在函数内使用return 返回了 this->sex 的值。
private
我们可以在类中修改 set_Sex 的修饰public 为 private,使用 private 后外部调用将会报错:
<?php
class Human {
public $sex;
public $hair;
private function set_Sex($val){
$this->sex=$val;
}
public function set_Hair($val){
$this->hair=$val;
}
public function get_Sex(){
return $this->sex;
}
public function get_Hair(){
return $this->hair;
}
}
$Xiaoming=new Human();
$Xiaoming->set_Sex('nan');
$Xiaoming->set_Hair('y');
echo $Xiaoming->get_Sex();
echo ' ';
echo $Xiaoming->get_Hair();
?>
运行报错如下:
但是在类内部中是可以调用的,在以下示例中,新建了一个 printInfo 函数,使用private 进行修饰,在外部调用不了,但是在内部还是可以调用的:修改一下查看示例:
<?php
class Human {
public $sex;
public $hair;
private function printInfo($val){
echo '传入的值是 '.$val.'<br/>';
}
public function set_Sex($val){
$this->printInfo($val);
$this->sex=$val;
}
public function set_Hair($val){
$this->hair=$val;
}
public function get_Sex(){
return $this->sex;
}
public function get_Hair(){
return $this->hair;
}
}
$Xiaoming=new Human();
$Xiaoming->set_Sex('nan');
$Xiaoming->set_Hair('y');
echo $Xiaoming->get_Sex();
echo ' ';
echo $Xiaoming->get_Hair();
?>
在 printInfo 函数中,传入了一个 val 参数,随后输出了这个参数。 printInfo 方法调用在 set_Sex 方法中,传入了 val,用 printInfo 作为提示。 结果如下:
- linq to xml复习
- web cache server方案比较:varnish、squid、nginx
- Nginx虚拟目录alias和root目录
- Nginx的https配置记录以及http强制跳转到https的方法梳理
- VPC下访问FTP的问题
- 分析车辆雨刮频次计算降雨量 大数据服务天气预报
- 干货:这里有一份小程序接入微信支付避雷指南
- Mysql占用过高CPU时的优化手段
- 服务器端加入自动运行的JS代码
- 数据中心发电机组的调试与验收要求
- mysql连接数设置操作(Too many connections)
- 做好容错才能确保服务器的不间断运行
- Mysql慢查询操作梳理
- crontab日常使用梳理
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 后台登录微信并定时发送消息,消息包括农历、阴历、天气;自动监测是否断线,支持邮箱发送二维码登录;适合于挂在服务器上运行
- 《剑指offer》第八天:二叉树的下一个结点
- 基于python和OpenCV构建智能停车系统
- nvm管理工具
- 基于OpenCV的图像卡通化
- shadertoy绘图
- 单基因生信分析流程(6)单基因相似性分析
- 三阴性乳腺癌提取和分析
- 一日一技:更友好的格式化数据提取方案
- 『深度应用』YoloV5 RTX2080Ti TensorRT与PyTorch速度对比
- 0797-使用HDP或CDP的Atlas采集CDH6的元数据和血缘
- 现代通信理论与新技术 PPT笔记整理
- 找找规律——LeetCode题目6:Z字形变换
- 给你点信心——LeetCode题目7:整数反转
- Python -二叉树 创建与遍历算法(很详细,转自国外教程)