- 浏览: 1633094 次
- 性别:
- 来自: 长春
文章分类
- 全部博客 (309)
- ext (19)
- web (13)
- PHP (19)
- 互联网新闻 (3)
- oracle (3)
- Mootools (1)
- FLEX (3)
- 人在职场 (2)
- hibernate (24)
- spring2 (1)
- J2SE (24)
- WEB_UI (14)
- 其它 (11)
- Log4J (1)
- iText (10)
- SQL (11)
- 设计模式 (3)
- lucene (6)
- 开源项目 (2)
- javascript (20)
- 软件&破解补丁 (48)
- Quartz (2)
- 解决方案 (1)
- 工作存档 (2)
- JAVA对文件操作 (2)
- C&C#&VC (1)
- struts2 (3)
- 版本控制 (2)
- 软考基础 (23)
- JBPM (2)
- velocity (4)
- javamail (3)
- HttpClient (9)
- 虚拟化技术 (2)
- 报表 (3)
- ibatis (5)
- Spring (4)
- 信用卡 (0)
- 芒果钱包 (0)
- 养卡 (0)
最新评论
-
a601962168:
...
通过JAVA与串口(RS232)通信实例 -
olive009:
...
Adobe Acrobat 9 Pro & Pro Extended 中文版/英文版 下载及破解补丁 -
overshit:
api更新了,一加filter就Callback filter ...
深入浅出CGlib-打造无入侵的类代理 -
u010778233:
写得很不错,已经用起来了,谢谢
将jdbc结果集转换成对象列表 -
924060929:
我想找就是要这个功能!!!!!!!!
velocity基础教程--2自定义ResourceLoader实现字符模板
<? //面向对象基础,定义一个类使用一个对象 //定义一个类 这里class Class 是没有区别的 Class Person{ //定义属性 //Public(公开): 可以自由的在类的内部外部读取、修改。 //Private(私有): 只能在这个当前类的内部读取、修改。 //Protected(受保护):能够在这个类和类的子类中读取和修改。 public $name = "noName"; public $age = 20; public function __toString() { //$this 指当前对象。 //在方法内部通过 $this-> 符号调用同一对象的属性。 return "我的名称:".$this->name." 我的年龄:".$this->age; } } $p = new Person(); var_dump($p); echo "<br>"; print_r($p); echo "<br>"; echo $p;//会自动调用类中的__toString()方法,所以如果这样做就必须在类中声明一个__toString() echo "<br>"; echo "我的名字是:".$p->name; echo "<br>"; echo "我的年龄是:".$p->age; //这里我们改变对象的属性,由于属性是public所以允许改变 $p->name = "Tom"; $p->age = 25; echo "<br>"; echo "我的名字是:".$p->name; echo "<br>"; echo "我的年龄是:".$p->age; ?>
<? //关于对象中的私有方法 class Person{ private $name = "noName"; } $p = new Person(); echo $p->name;//由于是私有属性所以不能在外部直接访问。Fatal error: Cannot access private property Person::$name in ?>
<? /** 属性赋值 PHP5中,在属性定义可以不设置初值,或者赋予以下红色类型的初值。 PHP中简单类型有8种,分别是: 数值类型 boolean 布尔类型 integer整型 float 浮点型,也称为 double 双精度浮点型 string 字符串 复合类型 array 数组 object对象 特殊类型 resource资源 NULL */ Class A{ } Class Person{ private $name;//属性未赋值 private $name1 = NULL;//属性赋空值,与未赋值一样 private $married = true;//属性赋布尔类型的值 private $grade = 0;//属性赋整型数值类型的值 private $eyesight = 0.1;//属性赋值浮点类型 private $nationality = "China";//属性赋值字符串类型 private $arr = array("foo"=>"bar",12=>true);//属性赋值数组类型 //private $a = new A();//php5中不允许给属性赋值为对象类型 //private $res = opendir("abc");//php5中不允许使用资源类型 //private $g = $this->grade;//不允许使用已经定义的属性为当前属性赋值 } $p = new Person(); ?>
<? //变量与引用变量 $arr = array("foo"=>"olf",12=>true); $a = $arr;//对$a赋值 $arr["foo"] = "new";//改变$arr中的值 print_r($arr); echo "<br>"; print_r($a); //我们可以看到改变一个数组的内容并没有影响另一个数组的内容。 //这时由于普通变量间的传值方法,就是值的赋值。比如数组。 echo "<br>"; echo "<br>"; //下面是关于对象间的引用 class Person{ public $name = "Tom"; } $p1 = new Person(); $p2 = $p1;//这里是传递引用 $p2->name = "Jack";//改变p2中属性name的值 echo '$p1的属性name = '.$p1->name; echo "<br>"; echo '$p2的属性name = '.$p2->name; //输出结果都是Jack,说明$p1,$p2 是指向同一对象 //而指向对象的变量,是一个引用变量。在这个变量里面存储的是所指向对象的内存地址。 //引用变量传值时,传递的是这个对象的指向。而非复制这个对象。 ?>
<? //属性的扩充 /** 在类中使用$this-> 调用一个未定义的属性时,PHP5会自动创建一个属性供使用。 这个被创建的属性,默认的方法权限是public。 */ class A{ public $name="Tom"; //类的构造函数,在对象创建的时候会自动调用 function __construct(){ $this->age="20";//调用一个不存在的属性 } } $p = new A(); echo $p->name; echo "<br>"; echo $p->age; //这里我们看到age已经被创建了,而且是public的。 ?>
<? //php5中的方法 class Person{ private $name = "NoName";//定义一个私有属性,这样外部不能能直接访问 public function getName(){ return $this->name; } } $p = new Person(); echo '名字是:'.$p->getName(); /** 上面的例子将属性设置为private ,同时声明了public的getName()方法,用来获取属性$name的值, 调用getName()方法就会通过 return $this->name 返回 $name 的值。 注意:这里,方法内部调用本地属性时,使用 $this->name来获取属性。在这个例子中, 设置了公开的getName()方法,即用户只能获取$name, 而无法改变他的值。这就是封装的好处。 */ ?>
<? class Person{ private $a; function setA($_a){ $this->a=$_a;//对属性$a进行赋值 } function getA(){ return $this->a;//返回属性a的值 } } $p = new Person();//创建对象 $p->setA(100);//属性赋值 echo $p->getA(); //如果声明这个方法有参数,而调用这个方法时没有传递参数,或者参数数量不足, //系统会报出错误。 如 $p->setA(); 如果对函数设置了默认值 也可以如此调用可以看一下下一个例子 //如果参数数量超过方法定义参数的数量,PHP就忽略多于的参数。不会报错。如 $p->setA(100,10,12); ?>
<? class Person{ private $a; function setA($_a = "Tom"){ $this->a = $_a;//对属性$a赋值,如果没有传递参数将用Tom代替 } function getA(){ return $this->a;//返回属性$a } } $p = new Person(); $p->setA();//没有显示的赋值 echo $p->getA(); ?>
<? //将对象作为参数传递进方法中 class A{ //声明一个A类 public $name = "Tom"; } class Person{ private $a; function setA($_a){ $this->a = $_a; } function getA(){ return $this->a; } } $a1 = new A(); $p = new Person(); $p->setA($a1,null);//将对象作为参数传递进去,虽然不允许直接为属性赋对象类型,但可以通过参数传递的方式进行赋值 echo $p->getA()->name;//$p-getA()取得对象,->name是对象中的属性 //在PHP5中,指向对象的变量是引用变量。在这个变量里面存储的是所指向对象的内存地址。 //引用变量传值时,传递的是这个对象的指向。而非复制这个对象。 ?>
<? //对象比较 class Person{ public $name = "noName"; } $p = new Person(); $p1 = new Person(); /** * 当使用比较操作符(==)时,对象以一种很简单的规则比较:当两个对象有相同的属性和值, * 属于同一个类且被定义在相同的命名空间中, * 则两个对象相等。等于符号比较对象时,比较对象是否有相同的属性和值。 * 注意:== 比较两个不同的对象的时候,可能相等也可能不等。 */ if($p == $p1){ echo '$p和$p1内容一致。'; }else{ echo '$p和$p1内容不一致。'; } echo "<br>"; $p->name = "Tom"; if($p == $p1){ echo '$p和$p1内容一致。'; }else{ echo '$p和$p1内容不一致。'; } echo "<br>"; //使用 == 符号比较两个对象 ,比较的仅仅是两个对象的内容是否一致。 ?>
<? /** * 对象比较 * 当使用全等符(===)时,当且仅当两个对象指向相同类(在某一特定的命名空间中)的同一个对象时才相等。 * 是否在是同一个对象,两边指向的对象是否有同样的内存地址。 * 结果=== 比较的是两个变量是否一个对象。 */ class Person{ public $name = "noName"; } $p = new Person(); $p1 = new Person(); if($p === $p1){ echo '$p和$p1是一个对象'; }else{ echo '$p和$p1不是一个对象'; } echo '<br>'; $p->name = "Tom"; if($p === $p1){ echo '$p和$p1是一个对象'; }else{ echo '$p和$p1不是一个对象'; } echo '<br>'; ?>
<? class Person{ } $p = new Person(); $p1 = new Person(); $p2 = $p1;//变量$p2指向$p1指向的对象 if($p2 === $p1){ echo '$p2和$p1指向一个对象'; }else{ echo '$p2和$p1不指向一个对象'; } echo "<br>"; $p = $p1;//变量$p指向$p1指向的对象 if($p === $p1){ echo '$p和$p1指向一个对象'; }else{ echo '$p和$p1不指向一个对象'; } echo "<br>"; ?>
<? //构造函数 /** * 构造方法又称为构造函数,是对象被创建时自动调用的方法,用来完成类初始化的工作。 * 构造函数和其它函数一样,可以传递参数,可以设定参数默认值。 * 构造函数可以调用属性,可以调用方法。 * 构造函数可以被其它方法显式调用。 */ //在PHP4 中使用与类名同名的方法为构造函数。在PHP5中依然支持了这种方式, //但不建议再使用这种方式。 class Person{ private $name; public function Person($name){ $this->name = $name; echo "在类被初始化的时候,会执行这里的代码<br>"; echo "\$name is $this->name <br>"; } } new Person("Tom"); new Person("Jack"); echo "<br><br><br>"; //在PHP5中规定构造函数使用_ _construct() 函数表示构造函数,注意是两个 _ 。 //这也是推荐使用的方式 class Person2{ private $name; public function __construct($name){ $this->name = $name; echo "在类被初始化的时候,会执行这里的代码<br>"; echo "\$name is $this->name <br>"; } } new Person2("Tom2"); new Person2("Jack2"); ?>
<? /** * 析构函数与PHP的垃圾回收机制 * 析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行。 * * GC(Garbage Collector) * 在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁。 * 这是PHP的GC(Garbage Collector)垃圾处理机制,防止内存溢出。 * 当一个PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中的所有对象同样被销毁。 * * __destruct() 析构函数,是在垃圾对象被回收时执行。 * 析构函数也可以被显式调用,但不要这样去做。 * 析构函数是由系统自动调用的,不要在程序中调用一个对象的析构函数。 * 析构函数不能带有参数。 */ //程序结束前,所有对象被销毁。 //析构函数被调用了。 class Person{ public function __destruct(){ echo "<br>析构函数在这里执行"; echo "<br>这里一般用来放置关闭数据库连接,关闭文件等的首尾工作"; } } $p = new Person(); for($i=0;$i<5;$i++){ echo "<br>$i"; } //这里php程序结束 对象销毁。 ?>
<? //当对象没有指向时,对象被销毁。 class Person{ public function __destruct(){ echo "<br>析构函数在这里执行<br>"; } } $p = new Person(); $p = null;//对象没有引用,被销毁,析构函数执行 //$p = "abc";//同样效果 //我们将$p设置为空或者第11行赋予$p一个字符串,这样$p之前指向的对象 //就成为了垃圾对象。PHP将这个对象垃圾销毁。 echo "我们看到,析构函数被执行了"; for($i = 0;$i<5;$i++){ echo "<br>$i"; } ?>
<? //unset变量 //unset一个引用变量时。 //unset 销毁的是指向对象的变量,而不是这个对象。 class Person{ public function __destruct(){ echo "<br>析构函数在这里执行<br>"; } } $p = new Person(); $p1 = $p;//设定新引用变量$p1与$p指向同一对象 unset($p); echo "是否看到\$p被销毁,对象也被销毁呢?"; for($i = 0 ; $i<5 ;$i++){ echo "<br>$i"; } unset($p1);//这里彻底没有指向对象的变量了。 echo "我们看到,析构函数被执行,对象也被销毁呢?"; ?>
请看实例部分
- webroot.zip (7.5 KB)
- 下载次数: 8
发表评论
-
php文件上传
2009-12-29 15:32 1473upload.html <html> < ... -
Discuz7插件之宣传中心【安装 下载】
2009-03-19 14:17 2640实际上discuz 7中已经包含了宣传中心的功能,该插件只是将 ... -
面向对象设计 7 —— PHP5面向对象进阶(关键字 parent)
2009-03-10 14:24 1381<? //parent::关键字 /** * ... -
面向对象设计 6 —— PHP5面向对象进阶(关键字 this)
2009-03-03 13:58 1310<? //this 关键字 /** * PHP ... -
面向对象设计 5 —— PHP5面向对象进阶(重写(override))
2009-03-02 15:39 2942<? //重写(override) /** * ... -
面向对象设计 4 —— PHP5面向对象进阶(属性的访问控制)
2009-02-27 15:39 2148<? //访问控制 //在PHP5中,可以在类的 ... -
面向对象设计 3 —— PHP5面向对象进阶(类的继承)
2009-02-27 14:19 2102<? /** * 继承是面向 ... -
面向对象设计 2 —— PHP5面向对象基础(实例部分)
2009-02-27 11:16 2444如果描述不清 请参见 ... -
php学习笔记--3(连接mysql并查询结果)
2009-02-25 11:19 2929DROP TABLE IF EXISTS `person` ... -
php笔记-2文件上传
2009-02-24 21:12 2146<html> <head> ... -
php笔记-1
2009-02-24 20:00 1266<?php $a="欢迎," ... -
PHP5面向对象开发教程第五章-PHP5异常处理
2009-02-20 13:39 17385.1 PHP中的错误信息...... ... -
PHP5面向对象开发教程第四章-PHP5接口与多态
2009-02-20 13:37 1764目录 4.1 接口的定义与规范.............. ... -
PHP5面向对象开发教程第三章-PHP5面向对象高级类特性
2009-02-20 13:34 17013.1 static变量、方法................ ... -
PHP5面向对象开发教程第二章-PHP5面向对象进阶
2009-02-20 13:31 15592.1 类的继承....................... ... -
PHP5面向对象开发教程第一章-PHP5面向对象基础
2009-02-20 13:28 1669目录............................. ... -
最新PHP5中文手册下载
2009-02-20 10:56 10229php5中文手册说明: php5.2发布,手册内容似乎也更新 ... -
Apache安装[图文详解]
2009-02-19 11:08 3820软件及版本: apache_2.2.4-win32-x86- ...
相关推荐
这篇博客“面向对象设计 2 —— PHP5面向对象基础(实例部分)”可能详细讲解了如何在PHP5中应用面向对象编程的基本原理和实践。在本文中,我们将深入探讨这些关键知识点,并结合提供的文件名,推测其可能包含的具体...
这篇博客“面向对象设计 4 —— PHP5面向对象进阶(属性的访问控制)”着重讲解了如何在PHP5中通过访问控制来保护类的内部状态,确保代码的封装性和安全性。 在PHP5中,我们可以为类的属性设置三种访问修饰符:public...
面向对象设计是编程领域中的一个重要概念,特别是在PHP5及更高版本中得到了显著强化。本教程主要探讨PHP5的面向对象进阶特性,特别是类的重写(Override)机制。通过以下列出的源码文件,我们可以深入理解这一概念。...
面向对象设计是编程领域中的一个重要概念,特别是在PHP5中,它引入了丰富的面向对象特性,使得PHP成为了一种更加强大的面向对象编程语言。本文将深入探讨PHP5中的"this"关键字,它是面向对象编程中一个至关重要的...
在PHP5中,面向对象编程(Object-Oriented Programming,OOP)是现代Web开发中的核心概念,极大地提升了代码的可读性、可维护性和复用性。本篇将深入探讨PHP5中的类的继承这一关键特性,以及如何在实际项目中应用。 ...
标题和描述概述的知识点主要集中在PHP面向对象编程的基础概念、应用以及高级特性上。下面将对这些知识点进行详细的解析和扩展。 ### PHP面向对象编程概览 PHP是一种广泛使用的脚本语言,支持多种编程范式,包括...
在面向对象编程中,设计模式基于一些基本原则,这些原则构成了良好设计的基础。本篇将深入探讨23种设计模式以及面向对象的基本原则。 面向对象的基本原则主要包括: 1. 单一职责原则(Single Responsibility ...
总之,《深入PHP++面向对象、模式与实践》是一本全面介绍PHP面向对象编程的宝典,无论是初学者还是有经验的开发者,都能从中受益匪浅,提升自己的PHP编程技能。附带的源码可以帮助读者更好地理解书中的示例,加深对...
$news1 = new News("PHP面向对象教程", "这是一个关于PHP OOP的教程"); $news1->display(); ``` 这里,`$news1`就是一个`News`类的对象,我们通过调用其`display`方法来显示新闻。 面向对象的三大特性——继承、...
综上所述,PHP专题涵盖了从基础到高级的关键知识点,包括重要函数的选择性解析、面向对象编程的深入理解、异常处理的应用以及静态化和缓存技术,旨在帮助开发者全面掌握PHP的核心技能,以适应不断发展的Web开发需求...
面向对象编程是一种程序设计范式,强调数据和操作这些数据的方法应该封装在一起,形成独立的实体——对象。下面我们将深入探讨PHP5的面向对象基础、进阶概念以及高级类特性。 ### 1. 面向对象基础 #### 类与对象 -...
《PHP5手册——PHP大全》是一本全面且深入的PHP编程指南,专为初学者和经验丰富的开发者设计。这本书以CHM(Compiled HTML Help)格式呈现,这种格式以其高效的检索和阅读体验而受到程序员的欢迎。书中内容清晰,...
### PHP面向对象编程详解——以星际争霸为例 #### 一、引言 在现代软件开发中,面向对象编程(Object-Oriented Programming, OOP)是一种广泛应用的技术,它通过将程序设计围绕“对象”来进行组织,使代码更易于...
1. 封装:这是面向对象编程的核心特性之一,它隐藏了对象内部的实现细节,只对外提供接口进行交互。这样可以保护数据不被外部随意访问,提高程序的安全性和稳定性。 2. 继承:继承允许一个类(子类)从另一个类...
这个框架基于PHP5,以简洁、快速和面向对象为设计原则,旨在提高开发效率,降低项目维护成本。在深入讲解ThinkPHP3.2的知识点之前,先了解一下它的一些核心特性。 1. **MVC模式**:ThinkPHP3.2采用模型-视图-控制器...
下面是一些关于PHP面向对象封装的基本概念: 1. 类(Class):类是创建对象的模板,它定义了对象的状态(属性)和行为(方法)。在PHP中,我们使用`class`关键字来声明一个类,如: ```php class Person { ...
在PHP的世界里,初学者经常会遇到许多概念和技巧,这些都在你所提到的"我的PHP学习之旅——PHP基础知识汇总.zip"文件中有所涵盖。这个压缩包可能是你学习PHP的宝贵资源,包含了从基础到进阶的各类知识点。下面,我将...