--恢复内容结束---

一、类和对象:

1.定义:

对象:我们所见到的东西都可以称之为对象,是类实例化出来的东西

类:是对所有的同类对象抽象出来的东西

eg: 在一张表中记录了全班同学的学号,姓名,性别等信息,这张表可以称为类,而每个学生的具体信息则是对象。

2. 定义类:

class 类名称   //这里一般默认类的名称首字母大写

{

成员变量;

成员函数

}

eg:  class Ren

{

var $name;   //成员变量,一般不要赋值

var $age;

var $height;

var $sex;

function Run()  //成员函数,又叫成员方法,是来完成对象的一些行为

{

      echo "这个人正在奔跑";

     }

}

3. 使用类:

3.1 实例化对象:

$r = new Ren()

3.2 给成员变量赋值,调用成员变量

$r->name='张三';    //给对象name赋值

$r->name;    //调取name的值

4. 调用成员方法:

$r->Run();   //执行成员方法

5. 访问修饰符:

种类:1. public  公有的。

2. protected  受保护的。只能在这个累和他的子类里使用

3. private  私有的。只能在这个类里使用,他的子类也无法使用

注意:a.   如果加访问修饰符,要去掉var

eg:

class Ren

{

public  $name;   //成员变量,一般不要赋值

protected $age;

private  $height;

var $sex;

}

echo $r->$name;

   echo $r->$age;

     echo $r->$height;

   echo $r->$sex;

这时的$name $sex 可以调用,$age,$height 是无法调用的.

因为对象不属于类,类只能在{}内使用

b.  如果不加访问修饰符,默认是公有的

6. $this引用

$this 代表该对象(哪个对象调用代表哪个),不是代表类。专门用来完成对象内部成员之间的访问。

class Ren

{

var $name;

var $age;

var $height;

var $sex;

  

function Run()

{

      echo "这个人正在奔跑";

     }

function Say()

{

      echo  $this->name."在说话";  //在方法Say()中,使用$this 访问name

$this->Run();   //也可以在Say()中调用另一个方法 Run()

     }

}

$r=new Ren();

$r->name="张三";

$r->Say();

输出结果为:

7. 构造函数/构造方法:

1.写法特殊:写法固定不变   function __construct()

function后加空格和两个下划线

2. 执行特殊:在造对象时直接执行,无需调用

3. 作用:对对象执行初始化操作

class Ren
{
public $Name;//成员变量,一般不要赋值
protected $age;
private $height;
var $sex;

function __construct($s)         //构造函数,原来的还在执行,可以添加自己的东西
{
     $this->sex=$a;                     //初始化sex的值
}

}

$r=new Ren("男");

echo $r->sex="女";

输出结果为:女

8. 析构函数:

在对象销毁前执行

function __destruct()
{

  echo "该对象销毁了!";
}

9. 面向对象的三大特征:封装性,继承性,多态性

封装性:

  9.1 目的:让类更加安全,不让外界直接访问类里面的成员变量

  9.2 做法:1.把成员变量做成私有的,private

2. 做一个方法来实现变量的取值或赋值,在方法里加限制条件 SetAge,GetAge

class Ren
{
  private $Name;
  private $age;
  private $sex;

function __destruct($s) 
{
  echo $this->sex=$a;
}

function SetAge($a)

{
  if($a>10 && $a<50)
  {
    echo $this->age =$a;
  }
}

function GetAge()
{
  return $this->age;
}

  9.3 SetAge和GetAge 

function SetAge($a)      //给age赋值的函数
{
  if($a>10 && $a<50)
    {
    echo $this->age =$a;
     }
}

$r=new Ren();
$r->SetAge(40);//输出结果为40
$r->SetAge(100);//超出条件限制,无结果

function GetAge()         //取age的值
{
  return $this->age;
}

echo $r->GetAge="30";//输出结果为30,也可以用 echo $r->GetAge=(30);

  9.4 使用类里面提供的魔术方法,也可以实现对私有成员的操作

1.function __set()

{

}

eg:

function __set($name,$value)  //对类累里面的私有成员进行赋值,设置参数
{
  if($name=="age")
  {
    //$this->变量名=$value;
    if($value>20 && $value<50)
    {
      echo $this->$name=$value;
    }

  }
  else
  {
    echo $this->$name=$value;
  }

}

$r->__set("name","张三"); //调用function __set()赋值
$r->$name="张三"; //执行该语句会自动调用__set方法

eg:

//$r->name="李四";
//$r->age="40";
//$r->sex="女";

特点::1.自动执行

2.把赋值语句中的变量名作为第一个参数,把变量值作为第二个参数调用__set()方法

2.function __get()

{

}

eg:

function __get($name)   //对类累里面的私有成员进行取值,设置参数
{
  return $this->$name;
}

特点:会自动执行,把取值语句中的变量名作为参数调用__get()方法

eg:

$r->name="张三";
$r->sex="男";

php 之 类,对象的更多相关文章

  1. C++ 类对象和 指针的区别

    C++ 类对象和 指针的区别 C++ 类对象和 指针的区别 转自:http://blog.csdn.net/ym19860303/article/details/8557746 指针的情况 class ...

  2. Android 通过 Intent 传递类对象或list对象

    (转:http://www.cnblogs.com/shaocm/archive/2013/01/08/2851248.html) Android中Intent传递类对象提供了两种方式一种是 通过实现 ...

  3. NSLog(@&quot;%@&quot;,类对象); 默认输出类名

    NSLog()函数输出Objective-c对象时,输出的是该对象的description方法的返回值.也就是说,以下两行代码作用完全一样(假设p是指向任何对象的指针变量). NSLog(@" ...

  4. WPF整理-XAML构建后台类对象

    1.XAML 接触WPF的第一眼就是XAML---XAML是用来描绘界面的.其实不然! "Actually, XAML has nothing to do with UI. It's mer ...

  5. class中new与未new的区别 类对象占用空间--转载

    转载自http://blog.sina.com.cn/shuiwuhendeboke    颗颗的博客 (1)作用域不同 不用new:作用域限制在定义类对象的方法中,当方法结束时,类对象也被系统释放了 ...

  6. 规则引擎集成接口(九)Java类对象

    Java类对象 右键点击“对象库” —“添加java类对象”,如下图: 弹出窗体,在文本框中输入类的全名“com.flagleader.test.Test”,选择该类型后确定,如下: 显示如下,勾选上 ...

  7. 1,SFDC 开发篇 - 类对象和SOQL查询

    1,类对象 & 接口 & 属性   2, Object & SOQL    

  8. 福利-&gt;KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型

    我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型 ...

  9. Python的高级特性8:你真的了解类,对象,实例,方法吗

    Python的高级特性1-7系列是本人从Python2过渡3时写下的一些个人见解(不敢说一定对),接下来的系列主要会以类级为主. 类,对象,实例,方法是几个面向对象的几个基本概念,其实我觉得很多人并不 ...

  10. Effective Objective-C 2.0 — 第14条:理解“类对象“的用意

    每个实例都有一个指向Class 对象的指针,用以表明其类型,而这些 Class 对象则构成了类的继承体系. 如果对象类型无法在编译期确定,那么就应该使用类型信息查询方法来探知. 尽量使用类型信息查询方 ...

随机推荐

  1. Datazen图表创建和发布

    Datazen是被微软收购的移动端全平台的数据展现解决方案.此篇主要介绍如何创建和发布图表. 如前面介绍,Datazen图表的创建和发布是通过Publisher的应用,它是Windows 8应用商店下 ...

  2. JavaScript中的作用域

    很多(JavaScript)开发者都在讨论"作用域",但它是什么?它们在JavaScript中的任何地方!我发现很多年轻的开发者不知道作用域是什么.他们中大多数人可以用jQuery ...

  3. mapreduce job提交流程源码级分析(一)(原创)

    首先,在自己写的MR程序中通过org.apache.hadoop.mapreduce.Job来创建Job.配置好之后通过waitForCompletion方法来提交Job并打印MR执行过程的log.H ...

  4. IE浏览器 下面的文本框,获得焦点后无法输入内容

    今天遇到一个问题,在IE浏览器下面,我点击 按钮  弹出一个弹出层,里面有一个 文本编辑器和一个文本框,但是第二次弹出后,文本框和文本编辑器无法输入内容,在控制台用js代码测试 $(document) ...

  5. springdata整合mongodb一些方法包括or,and,regex等等《有待更新》

    这几天接触mongodb以及springdata,自己英语比较戳,所以整理这些方法花的时间多了点,不过也是我第一次在外国网站整理技术 不多说,直接上代码,这里只是给出一些操作方法而已,如果有需要源码的 ...

  6. (简单) POJ 3169 Layout,差分约束+SPFA。

    Description Like everyone else, cows like to stand close to their friends when queuing for feed. FJ ...

  7. DataTable源码分析(二)

    DataTable源码分析(二) ===================== DataTable函数分析 ---------------- DataTable作为整个插件的入口,完成了整个表格的数据初 ...

  8. 联想电脑t450,t460p,t470等安装好ubuntu后启动找不到系统

    其实我是这样解决的: 进入bios: 关quick start 关security 然后reboot就可以了

  9. SQL注入的优化和绕过

    作者:Arizona 原文来自:https://bbs.ichunqiu.com/thread-43169-1-1.html 0×00 ~ 介绍 SQL注入毫无疑问是最危险的Web漏洞之一,因为我们将 ...

  10. 洛谷 P4127 [AHOI2009]同类分布 解题报告

    P4127 [AHOI2009]同类分布 题目描述 给出两个数\(a,b\),求出\([a,b]\)中各位数字之和能整除原数的数的个数. 说明 对于所有的数据,\(1 ≤ a ≤ b ≤ 10^{18 ...