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 相关文章推荐
PHP simple_html_dom.php+正则 采集文章代码
Dec 24 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
php去掉URL网址中带有PHPSESSID的配置方法
Jul 08 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
PHP生成网站桌面快捷方式代码分享
Oct 11 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
May 18 PHP
php mysql 封装类实例代码
Sep 18 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
May 24 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
第一个无线电台是由谁发明的
2021/03/01 无线电
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
JS判定是否原生方法
2013/07/22 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
python实现代码行数统计示例分享
2014/02/10 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
英语专业学子个人的自我评价
2013/10/02 职场文书
微型企业创业投资计划书
2014/01/10 职场文书
社会保险接收函
2014/01/12 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
教师先进个人材料
2014/12/17 职场文书
党员剖析材料范文
2014/12/18 职场文书
党小组评议意见
2015/06/02 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP