10月24日下午PHP封装
class Ren
{
private $name;
private $sex;
private $age;//年龄必须在18-50岁之间 function __construct($n)
{
$this->sex = $n;
}
//设置age的值
function setage($a)
{
if($a>=18 && $a<=50)
{
$this->age = $a;
}
}
//获取age的值
function getage()
{
return $this->age;
} function _destruct()
{
echo"这是一个析构方法";
} }
$r = new Ren("男"); $r->setage(20); echo $r->getage(); var_dump($r); //封装目的:为了让类更加的安全
//封装的做法:
//1.类里面的成员变量全部做为private
//2.使用成员方法来间接访问成员变量
//3.在该方法里面加限制条件
按照上面的方法用起来很不方便,一个变量要写两个函数,如果变量较多时,要写的函数会更多。
PHP里面有个方法是function __set();
class Ren
{
private $name;
private $sex;
private $age;//年龄必须在18-50岁之间 function __construct($n)
{
$this->sex = $n;
}
function __set($n,$v)//可以给成员变量赋值,括号里面有两个参数,第一个参数是成员变量的名称,第二个是成员变量的值。
{
$this->$n = $v;
}
}
$r = new Ren("男");
//$r->__set("age",20);//按照这种写法还是会比较复杂,每一个都需要写名字。按照下列写法写。
$r->age = 20;
var_dump($r); __set方法特殊在可以自动调用,在给成员变量赋值的时候自动调用function __set($n,$v),把age传给$n,把20传给$v。
上面的只能调用这个方法赋值,没有限制条件,下面代码是封装的最终形式。
class Ren
{
private $name;
private $sex;
private $age;//年龄必须在18-50岁之间 function __construct($n)
{
$this->sex = $n;
}
function __set($n,$v)
{
if($n=="age")
{
if($v>=18 && $v<=50)
{
$this->$n = $v;
}
}
else
{
$this->$n = $v;
}
}
}
$r = new Ren("男");
$r->__set("age",20);
var_dump($r); 一个类里面一个set就够了,如果成员变量多的话可以使用switch...case。
类里面的所有的双下划线的有一个统称,叫做魔术方法。
function __get()
class Ren
{
private $name;
private $sex;
private $age;//年龄必须在18-50岁之间 function __construct($n)
{
$this->sex = $n;
}
function __set($n,$v)//可以给成员变量赋值,括号里面有两个参数,第一个参数是成员变量的名称,第二个是成员变量的值。
{
if($n=="age")
{
if($v>=18 && $v<=50)
{
$this->$n = $v;
}
}
else
{
$this->$n = $v;
}
}
function __get($n)
{
return $this->$n;
}
}
$r->age = 40;
echo $r->age;//这么写会直接调用get方法。把变量名age传到get里面去
//例子:求两个圆之间的阴影面积 //面向过程的方式: /*$maxr = 20;
$minr = 10;
$mj = 3.14*$maxr*$maxr - 3.14*$minr*$minr; //面向对象的方式:
class Yuan//研究的是圆,类就是圆。
{
//代表半径
public $r;//圆的属性中有半径 function __construct($n)//构造函数
{
$this->r = $n;//给圆的半径赋上取到的值
} //求面积的方法
function MJ()//方法 求圆的面积的通用公式
{
return 3.14*$this->r*$this->r;
}
} $r1 = new Yuan(20);//圆1的半径是20
$r2 = new Yuan(10);//圆2的半径是10 $mianji = $r1->MJ()-$r2->MJ();*/
//例子:计算器
面向过程的方式:
$a = 10;
$b = 5; $jia = $a+$b;
$jian = $a-$b;
$cheng = $a*$b;
$chu = $a/$b; 面向过程的方式:
class jisuan
{
public $a;
public $b; function __construct($n,$m)
{
$this->a = $n;
$this->b = $m;
} function jia()
{
return $this->a+$this->b;
}
function jian()
{
return $this->a-$this->b;
}
function cheng()
{
return $this->a*$this->b;
}
function chu()
{
return $this->a/$this->b;
}
function quyu()
{
return $this->a%$this->b;
}
} $j = new jisuan(10,5);
$j->quyu();
10月24日下午PHP封装的更多相关文章
- 2016年10月24日 星期一 --出埃及记 Exodus 19:8
2016年10月24日 星期一 --出埃及记 Exodus 19:8 The people all responded together, "We will do everything th ...
- SPSS 2019年10月24日 今日学习总结
2019年10月24日今日课上内容1.SPSS掌握基于键值的一对多合并2.掌握重构数据3.掌握汇总功能 内容: 1.基于键值的一对多合并 合并文件 添加变量 合并方法:基于键值的一对多合并 变量 2. ...
- Gitbook环境搭建及制作——2019年10月24日
1.gitbook介绍 GitBook 是一个基于 Node.js 的命令行工具,支持 Markdown 和 AsciiDoc 两种语法格式,可以输出 HTML.PDF.eBook 等格式的电子书.可 ...
- 10月28日下午MySQL数据库的增加、删除、查询(匹配数据库登录和可以增、删、查的显示数据库内容的页面))
一.匹配数据库登录 步骤: 1.做一个普通的登录界面,注意提交方式为post. <!--登录界面--> <form action="chuli.php" meth ...
- 10月24日上午PHP面向对象
面向对象 程序分为两种,一种是面向过程的,另一种是面向对象的.之前的学的都是面向过程的,按部就班的一步一步的按照顺序往下走. 面向对象: 1.什么叫做对象 一切皆为对象(一个对象由一组属性和有权对这些 ...
- 10月21日下午PHP常用函数
函数四要素:返回类型 函数名 参数列表 函数体 //最简单的函数定义方式 function Show() { echo "hello"; } Show();//输出结果为he ...
- 10月16日下午MySQL数据库CRUD操作(增加、删除、修改、查询)
1.MySQL注释语法--,# 2.2.后缀是.sql的文件是数据库查询文件. 3.保存查询. 关闭查询时会弹出提示是否保存,保存的是这段文字,不是表格(只要是执行成功了表格已经建立了).保存以后下次 ...
- Week7(10月24日)
Part I:提问 =========================== 1.数据验证属性的练习. 按要求写出教室和课程的模型类. (1)教室类主键不自动增值,手工输入. (2)教室名字不超过10 ...
- 10月30日下午 PHP精确查询(模糊查询、模糊+关键字共同查询)
1.一个条件的模糊查询 <body> <br /> <form action="main.php" method="post"&g ...
随机推荐
- [转载]java之yield(),sleep(),wait()区别详解
原文地址:http://dylanxu.iteye.com/blog/1322066 1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁 ...
- GL.IssuePluginEvent 发布插件事件
Description 描述 Send a user-defined event to a native code plugin. 发送一个用户定义的事件到一个本地代码插件. Rendering in ...
- 联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595
联发科发布全球首款搭载Android TV的智能电视系统芯片MT5595 admin 资讯 01-07 1 1月7日消息,联发科宣布与Google共同开发出全世界第一个搭载Android TV操作系统 ...
- Win10系统旗舰版ghost版系统镜像下载
微软已经发布了Win10预览版10041快速版更新,但通过Windows更新的方式比较慢.现在微软官方已经发布Win10预览版10041的系统ISO镜像,还没更新这一版本的朋友可以使用该镜像进行更新. ...
- 【java开发】方法重写和方法重载概述
类的继承 父类-子类 关键字 extends 新建一个父类 public class Person { private String name; private int ...
- JSP连接数据库,报Unable to compile class for JSP
先看一下报错原因: HTTP Status 500 - Unable to compile class for JSP: type Exception report message Unable to ...
- 第一个JAVA应用
1.1创建源文件 1.1.1Java源文件结构 Java应用由一个或多个扩展名为“.Java”的文件构成,这些文件被成为源文件.从编译角度,则被称为编译单元(Compilation Unit). 如果 ...
- Java的泛型反射
If the superclass is a parameterized type, the {@code Type} * object returned must accurately reflec ...
- 关于Advanced Installer 11.0打包软件过程一些记录
1.想要安装后在默认网站下为一个虚拟目录,IIs,Web应用程序,选中虚拟目录是一个Web应用程序.同时修改常规>文件夹,重新指向网站文件所在目录,不然会少一级目录 2.如果想单独的应用程序池, ...
- Spring源码分析——BeanFactory体系之抽象类、类分析(一)
上一篇介绍了BeanFactory体系的所有接口——Spring源码分析——BeanFactory体系之接口详细分析,本篇就接着介绍BeanFactory体系的抽象类和接口. 一.BeanFactor ...