php的核心技术,PHP核心技术——面向对象

类与对象:

类的定义与实例化。

//定义类

class person{

public $name;

public $gender;

public function say(){

echo $this->name,"\tis ",$this->gender,"\r\n";

}

}

class family{

public $people;

public $location;

public function __construct($p,$loc)

{

$this->people=$p;

$this->location=$loc;

}

}

//实例化

$student=new person();

$student->name='Tom';

$student->gender="male";

$student->say();

$teacher=new person();

$teacher->name='Kate';

$teacher->gender="female";

$teacher->say();

类定义了一系列的属性和方法,并提供了实际的操作细节,这些方法可以用来对属性进行加工。

对象含有类属性的具体值,这就是类的实例化。正是由于属性的不同,才能区分不同的对象。在上面例子里,由于student和teacher的性别和姓名不一样,才得以区分开二人。

对象由属性和方法组成

由于PHP的对象是用数组来模拟的,因此我们把对象转为数组,就能看到这个对象所拥有的属性了。

print_r((array)$student);

var_dump($student);

对象就是一堆数据。既然如此,可以把一个对象存储起来,以便需要时用。这就是对象的序列化。

$str=serialize($student);

echo $str;

file_put_contents('store.txt', $str);

$str=file_get_contents('store.txt');

$student=unserialize($str);

$student->say();

对象序列化后,存储的只是对象的属性。类是由属性和方法组成的,而对象则是属性的集合,由同一个类生成的不同对象,拥有各自不同的属性,但共享了类的代码空间中方法区域的代码

对象也是一种很普通的变量,不同的是其携带了对象的属性和类的入口。

而对象和数组的区别在于:对象还有个指针,指向了它所属的类。在对student对象序列化时,我们看到了“person”这几个字符,这个标识符就标志了这个对象归属于person类,故在取出这个对象后,可以立即对其执行所包含的方法。

$tom=new family($student,'peking');

echo serialize($student);

echo "-----------\n";

$student_arr=array('name'=>'Tom','gender'=>'male');

echo "-----------\n";

echo serialize($student_arr);

print_r($tom);

echo "-----------\n";

echo serialize($tom);

类是定义一系列属性和操作的模板,而对象则把属性进行具体化,然后交给类处理。

对象就是数据,对象本身不包含方法。但是对象有一个“指针”指向一个类,这个类里可以有方法。

方法描述不同属性所导致的不同表现。

类和对象是不可分割的,有对象就必定有一个类和其对应,否则这个对象也就成了没有亲人的孩子(但有一个特殊情况存在,就是由标量进行强制类型转换的object,没有一个类和它对应。此时,PHP中一个称为“孤儿”的stdClass类就会收留这个对象)。

参考资料

[PHP核心技术与最佳实践]

Java匹马行天下之JavaSE核心技术——面向对象

面向对象 注: 看此篇时强烈建议有一定的面向对象思想基础,有一定的基础后先翻到下面看第九条:      9.面向对象: 从未封装→封装→继承→多态→抽象类→接口的代码演变 按这个逻辑去看,,哪有不理解 ...

Java-Java面向对象程序设计

2017-10-09 17:23:52 在面向对象技术中,将客观世界中的一个事物作为一个对象来考虑,比如有个张先生,他就是一个对象.每个对象都有自己的属性和行为.张先生的属性根据需要有姓名.性别.身高 ...

Java匹马行天下之新手学习目录

Java匹马行天下之新手学习目录 学习路线 [Java匹马行天下——Java学习路线] [Java匹马行天下——开篇学习计划] 基础篇 [Java匹马行天下之学编程的起点——编程常识知多少] [Jav ...

Java核心技术及面试指南 面向对象部分的面试题总结以及答案

问题2.7.1,开放性问题,说一下你对面向对象思想的了解. 要点1,先说基础概念,比如面向对象思想包括封装.继承.多态,然后说些语法,比如可以通过extends继承类.通过implement来实现接口 ...

Python核心技术与实战——十|面向对象的案例分析

今天通过面向对象来对照一个案例分析一下,主要模拟敏捷开发过程中的迭代开发流程,巩固面向对象的程序设计思想. 我们从一个最简单的搜索做起,一步步的对其进行优化,首先我们要知道一个搜索引擎的构造:搜索器. ...

Python核心技术与实战——九|面向对象

在搞清了各种数据类型.赋值判断.循环以后如果是从C++.Java语言入手的,就会有一个深坑要过:OOP(object oriented programming):公私有保护.多重继承.多态派生.纯函数 ...

面向对象核心技术(java)

一.类的封装详解 在“面向对象编程基础(java)”的时候讲过,封装是面向对象编程的核心思想.同时我们也知道类是载体,只不过我们把对象的属性和行为封装在载体中. 现我们用封装的方式来实现,一个顾客去一 ...

Hibernate核心技术简介

Hibernate核心技术简介 1.Hibernate映射文件开发     Hibernate映射文件就是项目中*.hbm.xml文件,其主要是完成各元素的配置,包括根元素.类元素.定义主键.设置主键 ...

随机推荐

Eclipse启动tomcat 报“ A child container failed during start”

org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]   at org.ap ...

POJ 3321- Apple Tree(标号+BIT)

题意: 给你一棵树,初始各节点有一个苹果,给出两种操作,C x 表示若x节点有苹果拿掉,无苹果就长一个. Q x查询以x为根的子树中有多少个苹果. 分析: 开始这个题无从下手,祖先由孩子的标号不能确定 ...

Myeclipse 8.5 优化设置

1.1 更改JavaScript文件默认编码 1.2 关闭Myeclipse不需要的启动项 1.3 取消Myeclipse自动更新 1.4 关闭Myeclipse自动验证 1.5 设置Myeclips ...

[小知识]不显示没有内容的UITableViewCell

开发过程中常常使用到UITableView,当tableView的内容不足一屏时,若设置了talbeView的高度为屏幕高度,就会出现没有内容的cell显示出来,效果非常不好看,要想让没有内容的cel ...

ViewBag的简单使用

一,在控制器中写好数据绑定 //通过ID查找出整列的数据            Case.Models.Case theCase = db.Case.Find(id);            View ...

Nim or not Nim? hdu3032 SG值打表找规律

Nim or not Nim? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

jdk源码->集合->LinkedList

类的属性 public class LinkedList extends AbstractSequentialList implements List

Android事件总线(四)源码解析otto

前言 上一篇文章中讲到了otto的用法,这一篇我们来讲一下otto的源码.可能有人觉得otto过时了,但是通过源码我们学习的是高手设计otto时的设计理念,这种设计理念是不过时的. otto各个类的作 ...

SystemTap - 安装

按照SystemTap Beginners Guide的Installation and Setup部分安装了SystemTap,没想到竟然还有点曲折,在这里纪录一下. 环境 Linux发行版本:Ce ...

《SQL Server 2008从入门到精通》20180627

数据库范式理论 范式理论是为了建立冗余较小结构合理的数据库所遵循的规则.关系数据库中的关系必须满足不同的范式.目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).BC ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值