php基础知识:类与对象(1)


Posted in PHP onDecember 13, 2006

类的定义:
   以关键字 class 开头,后面跟着类名,可以是任何非 PHP 保留字的名字。后面跟着一对花括号,里面包含有类成员和方法的定义。

伪变量$this
可以在当一个方法在对象内部调用时使用。$this 是一个到调用对象(通常是方法所属于的对象,但也可以是另一个对象,如果该方法是从第二个对象内静态调用的话)的引用。
//??静态调用的内部到底是怎样的?
看个例子:
class A
{
   function foo()
   {
       if (isset($this)) {
           echo '$this is defined (';
           echo get_class($this);
           echo ")\n";
       } else {
           echo "\$this is not defined.\n";
       }
   }
}
class B
{
   function bar()
   {
       A::foo();
   }
}
$a = new A();
$a->foo();
A::foo();
$b = new B();
$b->bar();
B::bar();
输出结果为:
$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.
/*我希望知道这个例子的内存等的具体实现,我暂时无法理解。如果有人可以讲清楚,可以告诉我。我们宿舍牛头现在正在冬眠,等他醒来,我会问。*/

new
要创建一个对象的实例,必须创建一个新对象并将其赋给一个变量。当创建新对象时该对象总是被赋值,除非该对象定义了构造函数并且在出错时抛出了一个异常。
当把一个对象已经创建的实例赋给一个新变量时,新变量会访问同一个实例,就和用该对象赋值一样。此行为和给函数传递入实例时一样。可以用克隆给一个已创建的对象建立一个新实例。

(这几句话虽然很短,但是未必容易理解。)
例子如下:
class SimpleClass
{
   // 成员声明
   public $var = 'a default value';

   // 方法声明
   public function displayVar() {
       echo $this->var;
   }
}

//看下面的图.1>new 在heap(堆)中实例化一个对象。2>将指针$instance指向他
$instance = new SimpleClass();
//3>将指针$assigned指向heap中的实例化对象
$assigned   =  $instance;
//4>将$instance的引用(地址)赋值给$reference
$reference  =& $instance;
$instance->var = '$assigned will have this value';
$instance = null;
// 5>间断$instance与heap中实例的连接。
var_dump($instance);
var_dump($reference);
var_dump($assigned);
输出:
NULL
NULL
object(SimpleClass)#1 (1) {
  ["var"]=>
    string(30) "$assigned will have this value"
}
图示整个过程:
php基础知识:类与对象(1)

类继承extends
一个类可以在声明中用 extends 关键字继承另一个类的方法和成员。不能扩展多个类,只能继承一个基类。

被继承的方法和成员可以通过用同样的名字重新声明被覆盖,除非父类定义方法时使用了 final 关键字。可以通过 parent:: 来访问被覆盖的方法或成员。(继承的机制到底怎样的?)
源代码如下:
class ExtendClass extends SimpleClass
{
   // Redefine the parent method
   function displayVar()
   {
       echo "Extending class\n";
       parent::displayVar();
   }
}
$extended = new ExtendClass();
$extended->displayVar();

输出:
Extending class
a default value

PHP 相关文章推荐
JAVA/JSP学习系列之二
Oct 09 PHP
PHP新手上路(十二)
Oct 09 PHP
实现 win2003 下 mysql 数据库每天自动备份
Dec 06 PHP
php笔记之常用文件操作
Oct 12 PHP
php开启openssl的方法
May 15 PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 PHP
php计算函数执行时间的方法
Mar 20 PHP
学习php设计模式 php实现原型模式(prototype)
Dec 07 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 PHP
PHP预定义接口――Iterator用法示例
Jun 05 PHP
php基础知识:函数基础知识
Dec 13 #PHP
php基础知识:控制结构
Dec 13 #PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 #PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 #PHP
傻瓜化配置PHP环境――Appserv
Dec 13 #PHP
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 #PHP
中篇:安装及配置PHP
Dec 13 #PHP
You might like
linux下php上传文件注意事项
2016/06/11 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
javascript背投广告代码的完善
2008/04/08 Javascript
学习ExtJS fit布局使用说明
2009/10/08 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
Nodejs进阶:核心模块net入门学习与实例讲解
2016/11/21 NodeJs
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
详解Python中is和==的区别
2019/03/21 Python
Django继承自带user表并重写的例子
2019/11/18 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
windows支持哪个版本的python
2020/07/03 Python
python中K-means算法基础知识点
2021/01/25 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
生物技术专业研究生自荐信
2013/09/22 职场文书
商务英语求职自荐信范文
2013/12/24 职场文书
户籍证明的格式
2014/01/13 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
平安建设汇报材料
2014/12/29 职场文书
初三英语教学计划
2015/01/23 职场文书
关于学习的决心书
2015/02/05 职场文书
校车安全管理责任书
2015/05/11 职场文书