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 相关文章推荐
很实用的一个完整email发送程序
Oct 09 PHP
php 采集书并合成txt格式的实现代码
Mar 01 PHP
PHP 编程安全性小结
Jan 08 PHP
PHP中“简单工厂模式”实例代码讲解
Sep 04 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
Jun 03 PHP
PHP添加Xdebug扩展的方法
Feb 12 PHP
php实现的CSS更新类实例
Sep 22 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
php验证码生成器
May 24 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 25 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
PHP中文分词的简单实现代码分享
2011/07/17 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
phpwind放自动注册方法
2006/12/02 Javascript
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
python中map()函数的使用方法示例
2017/09/29 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
高中班主任评语大全
2014/04/25 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
工伤私了协议书范本
2014/11/24 职场文书
工会文体活动总结
2015/05/07 职场文书
朋友聚会开场白
2015/06/01 职场文书
道士塔读书笔记
2015/06/30 职场文书
A22国内电台短波广播频率表
2022/05/10 无线电