PHP类的特性实例分析
作者:ligbee 发布时间:2024-05-03 15:49:46
标签:PHP,类的特性
本文实例讲述了PHP类的特性。分享给大家供大家参考,具体如下:
对象向下传递特性
当一个对象调用一个实例方法,然后在该方法中又去静态调用另一个类的方法,则在被静态调用的方法中获得源方法中的对象(this)
<?php
class bee{
public $a = 1;
public function f(){
echo $this->a;
echo '<br>';
@lig::f();
}
}
class lig{
public $a = 2;
public function f(){
echo $this->a;
}
}
$obj = new bee();
$obj->f();
运行结果为:
1
1
static 后期静态绑定
static有3个不同含义的语法
函数中的静态变量
function f(){
static $v = 1;
}
类中的静态成员
class bee{
static $v = 1;
static function f(){}
}
方法中的动态指定‘当前类',与self不同,static所代表的是调用本方法的类(动态),self指其代码所在的类(静态)
class bee{
static public $a = 10;
static public function f(){
echo get_class().':';
echo self::$a.'-';
echo static::$a;
}
}
class lig extends bee{
static public $a = 20;
}
echo bee::f();
echo '<br>';
echo lig::f();
运行结果如下:
bee:10-10
bee:10-20
面向对象三大思想
1. 封装
就是把数据封装起来尽量不给别人看,可以认为最基本的封装是把很多的数据封装类里面,但更严格地讲,是尽量将属性做成私有的,并通过共有的方法向外提供操作。
2. 继承
3. 多态
通常指的是一个对象用同样的方法得到不同的结果
也指不同的对象使用相同的方法得到不同的结果
PS:自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或 static【本例测试运行环境为php5.3.3】。
希望本文所述对大家PHP程序设计有所帮助。


猜你喜欢
- 方法一:函数添加1 import sys2 查看sys.path3 添加sys.path.append("c:\\")方
- 官方文档中关于super的定义说的不是很多,大致意思是返回一个代理对象让你能够调用一些继承过来的方法,查找的机制遵循mro规则,最常用的情况
- <script> Array.prototype.swap = function(i, j) { var temp = this
- 如果你已经有使用JavaScript的经验,你可能已经知道这两个看似相同的方法:Array.prototype.map()和Array.pr
- numpy库概述numpy库处理的最基础数据类型是由同种元素构成的多维数组,简称为“数组”数组的特点:数组中所有元素的类型必须相同数组中元素
- 废话少说,直接上SQL代码(有兴趣的测试验证一下),下面这个查询语句为什么将2008-11-27的记录查询出来了呢?这个是同事遇到的一个问题
- MySQL有多种存储引擎,MyISAM和InnoDB是其中常用的两种。这里介绍关于这两种引擎的一些基本概念(非深入介绍)。MyISAM是My
- 这次做一个比较贴近我实际的东西:python分析作业提交情况。要求: 将服务器中交作业的学生(
- 效果图实例代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit
- 本文主要是利用Python的第三方库Pillow,实现单通道灰度图像的颜色翻转功能。# -*- encoding:utf-8 -*-impo
- 从一个字符串开始在CODE上查看代码片派生到我的代码片 >>>time_str='2008-08-08
- 本文实例讲述了scrapy自定义pipeline类实现将采集数据保存到mongodb的方法。分享给大家供大家参考。具体如下:# Standa
- 第一次发博客,还有点小激动,本人现在正在天津上大学,希望以后从事前端这一行业,学习的时间不长,写博客为了记录自己的学习过程和收获,当然也算是
- 做一个总结,把自己这些年的从业经历和观感罗列一下,某些话可能触及到个人神经,但它们没有恶意。设计师喜欢把世界想象得很美好,社会很和谐,但是这
- 1. 日志输出到屏幕#!/usr/bin/env python# -*- coding: utf-8 -*-from __future__
- 一、装饰器decorator decorator设计模式允许动态地对现有的对象或函数包装以至于修改现有的职责和行为,简单地讲用来动态地扩展现
- 阅读上一篇:AJAX的jQuery实现入门(一)要写入数据库,我们知道的最简单的就是注册了, 就做个最简单的注册表单, 看看是如何提交数据的
- 1. 图片加载、灰度图、 显示和保存from PIL import Imageimg = Image.open('01.jpg
- 没注意到MooTools的Cookie类在写的时候自己做了一次encode,在读的时候做了一次decode,在一般的情况下,这个不会有什么问
- 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技