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 事务处理数据实现代码
May 13 PHP
深入phpMyAdmin的安装与配置的详细步骤
May 07 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
浅谈php中include文件变量作用域
Jun 18 PHP
简单的自定义php模板引擎
Aug 26 PHP
php的socket编程详解
Nov 20 PHP
PHP实现电商订单自动确认收货redis队列
May 17 PHP
Laravel 模型关联基础教程详解
Sep 17 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
Jan 04 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生成二维码的两个方法和实例
2014/07/01 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
js的.innerHTML = ""IE9下显示有错误的解决方法
2013/09/16 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
Vue中使用vux的配置详解
2017/05/05 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
详解Python如何获取列表(List)的中位数
2016/08/12 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
python使用opencv实现马赛克效果示例
2019/09/28 Python
Python实现快速排序的方法详解
2019/10/25 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
python多维数组分位数的求取方式
2020/03/03 Python
Python 必须了解的5种高级特征
2020/09/10 Python
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
美国最佳选择产品网站:Best Choice Products
2019/05/27 全球购物
会计学专业学生的求职信范文
2014/01/27 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
住宅质量保证书
2014/04/29 职场文书
个人担保书格式范文
2014/05/12 职场文书
先进个人申报材料
2014/12/30 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS