细说php 4(请问一下,php4与php5区别具体有哪些,哪个比较好,请详细回答我)

2025-11-12 12:15:01 :0

细说php 4(请问一下,php4与php5区别具体有哪些,哪个比较好,请详细回答我)

这篇文章给大家聊聊关于细说php 4,以及请问一下,php4与php5区别具体有哪些,哪个比较好,请详细回答我对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

请问一下,php4与php5区别具体有哪些,哪个比较好,请详细回答我

PHP5里面多了新的对象模式
PHP5 中的对象已经进行了较系统、较全面的调整,现在的样子可能看起来会有些类似于 Java。本小节着重讲述 PHP5 中新的对象模式,并举了一些较简易的例子来说明。就让本节成为你的 PHP5 之旅的一个新起点吧。:)
* 构造函数和析构函数
* 对象的引用
* 对象的克隆
* 对象中的私有、公共及受保护模式
* 接口 (Interfaces)
* 抽象类
* __call
* __set 和 __get
* 静态成员
构造函数和析构函数
在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。
在 PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct。
例一:构造函数和析构函数
《?php
class foo {
var $x;
function __construct($x) {
$this-》x = $x;
}
function display() {
print($this-》x);
}
function __destruct() {
print("bye bye");
}
}
$o1 = new foo(4);
$o1-》display();
?》
在上面的例子中,当你终止调用 foo 类的时候,其析构函数将会被调用,上例中会输出 “bye bye”。
对象的引用
例二:对象的引用
《?php
class foo {
var $x;
function setX($x) {
$this-》x = $x;
}
function getX() {
return $this-》x;
}
}
$o1 = new foo;
$o1-》setX(4);
$o2 = $o1;
$o1-》setX(5);
if($o1-》getX() == $o2-》getX()) print("Oh my god!");
?》
对象的克隆
如上所述,当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?PHP5 提供了一个新的功能,就是对象的克隆,语法为 __clone。
例三:对象的克隆
《?php
class foo {
var $x;
function setX($x) {
$this-》x = $x;
}
function getX() {
return $this-》x;
}
}
$o1 = new foo;
$o1-》setX(4);
$o2 = $o1-》__clone();
$o1-》setX(5); if($o1-》getX() != $o2-》getX()) print("Copies are independant");
?》
对象克隆的方法在其它很多应用程序语言中都是存在的,所以你不必担心它的稳定性。:)
公共模式(Public):允许在对象外部进行操作控制。
私有模式(Private):只允许本对象内的方法对其进行操作控制。
受保护模式(Protected):允许本对象及其父对象对其进行操作控制。
例四: 对象中的私有、公共及受保护模式
《?php
class foo {
private $x;
public function public_foo() {
print("I’m public");
}
protected function protected_foo() {
$this-》private_foo(); //Ok because we are in the same class we can call private methods
print("I’m protected");
}
private function private_foo() {
$this-》x = 3;
print("I’m private");
}
}
class foo2 extends foo {
public function display() {
$this-》protected_foo();
$this-》public_foo();
// $this-》private_foo(); // Invalid! the function is private in the base class
}
} $x = new foo();
$x-》public_foo();
//$x-》protected_foo(); //Invalid cannot call protected methods outside the class and derived classes
//$x-》private_foo(); //Invalid private methods can only be used inside the class $x2 = new foo2();
$x2-》display();
?》
提示:对象中的变量总是以私有形式存在的,直接操作一个对象中的变量不是一个好的面向对象编程的习惯,更好的办法是把你想要的变量交给一个对象的方法去处理。
接口 (Interfaces)
众所周知,PHP4 中的对象支持继承,要使一个对象成为另一个对象的派生类,你需要使用类似 “class foo extends parent” 的代码来控制。 PHP4 和 PHP5 中,一个对象都仅能继承一次,多重继承是不被支持的。不过,在 PHP5 中产生了一个新的名词:接口,接口是一个没有具体处理代码的特殊对象,它仅仅定义了一些方法的名称及参数,此后的对象就可以方便的使用 ’implement’ 关键字把需要的接口整合起来,然后再加入具体的执行代码。
例五:接口
《?php
interface displayable {
function display();
}
interface printable {
function doprint();
}
class foo implements displayable,printable {
function display() {
// code
} function doprint() {
// code
}
}
?》
这对提高代码的可读性及通俗性有很大的帮助,通过上面的例子可以看到,对象 foo 包含了 displayable 和 printable 两个接口,这时我们就可以清楚的知道,对象 foo 一定会有一个 display() 方法和一个 print() 方法,只需要去了解接口部分,你就可以轻易的操作该对象而不必去关心对象的内部是如何运作的。
抽象类
抽象类不能被实例化。
抽象类与其它类一样,允许定义变量及方法。
抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。
例六:抽象类
《?php
abstract class foo {
protected $x;
abstract function display();
function setX($x) {
$this-》x = $x;
}
}
class foo2 extends foo {
function display() {
// Code
}
}
?》
__call
PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。
例七:__call
《?php
class foo {
function __call($name,$arguments) {
print("Did you call me? I’m $name!");
}
} $x = new foo();
$x-》doStuff();
$x-》fancy_stuff();
?》
这个特殊的方法可以被用来实现“过载(overloading)”的动作,这样你就可以检查你的参数并且通过调用一个私有的方法来传递参数。
例八:使用 __call 实现“过载”动作
《?php
class Magic {
function __call($name,$arguments) {
if($name==’foo’) {
if(is_int($arguments);
if(is_string($arguments);
}
} private function foo_for_int($x) {
print("oh an int!");
} private function foo_for_string($x) {
print("oh a string!");
}
} $x = new Magic();
$x-》foo(3);
$x-》foo("3");
?》
__set 和 __get
这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。
例九: __set 和 __get
《?php
class foo {
function __set($name,$val) {
print("Hello, you tried to put $val in $name");
}
function __get($name) {
print("Hey you asked for $name");
}
}
$x = new foo();
$x-》bar = 3;
print($x-》winky_winky);
?》
类型指示
在 PHP5 中,你可以在对象的方法中指明其参数必须为另一个对象的实例。
例十:类型指示
《?php
class foo {
// code ...
}
class bar {
public function process_a_foo(foo $foo) {
// Some code
}
}
$b = new bar();
$f = new foo();
$b-》process_a_foo($f);
?》
可以看出,我们可以显性的在参数前指明一个对象的名称,PHP5 会识别出这个参数将会要是一个对象实例。
静态成员
静态成员和静态方法在面象对象编程的术语中被称作 “对象方法(class methods)” 和 “对象变量(class variables)”。
“对象方法” 在一个对象没有实例化前允许被调用。同样,“对象变量” 在一个对象没有实例化前可以被独立操作控制(不需要用一个对象的方法来控制)。
例十一:对象方法和对象变量
《?php
class calculator {
static public $pi = 3.14151692;
static public function add($x,$y) {
return $x + $y;
}
}
$s = calculator::$pi;
$result = calculator::add(3,7);
print("$result");
?》
异常处理
异常处理是公认的处理程序错误的理想方法,在 Java 及 C++ 中都有这个概念,我们欣喜的看到,在 PHP5 已经加入了这方面的应用。你可以尝试使用 “try” 和 “catch” 来控制程序的错误。
例十二:异常处理
《?php
class foo {
function divide($x,$y) {
if($y==0) throw new Exception("cannot divide by zero");
return $x/$y;
}
}
$x = new foo();
try {
$x-》divide(3,0);
} catch (Exception $e) {
echo $e-》getMessage();
echo "n
n";
// Some catastrophic measure here
}
?》
上例中,我们使用了 “try” 来执行花括号中的语句,当有错误发生的时候,代码会把错误交给 “catch” 子句来处理,在 “catch” 子句中,你需要指明要把错误交给某个对象处理,这样做可以使代码结构看起来更清晰,因为现在我们可以把所有的错误信息交给一个对象来处理。
自定义错误处理
你可以很方便的用自定义的处理错误的代码来控制你的程序中的意外。你仅仅需要从异常类中派生出一个自己的错误控制类,在你自己的错误控制类中,你需要有一个构造函数和一个 getMessage 方法,以下是一个例子。
例十三:自定义错误处理
《?php
class WeirdProblem extends Exception {
private $data;
function WeirdProblem($data) {
parent::exception();
$this-》data = $data;
}
function getMessage() {
return $this-》data . " caused a weird exception!";
}
}
?》
现在我们可以使用 “throw new WeirdProblem($foo)” 来抛出一个错误句柄,如果错误在 “try” 的代码块中发生,PHP5 会自动把错误交给 “catch” 部分来处理。
名称空间
名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。
例十四:名称空间
《?php
namespace Math {
class Complex {
//...code...
function __construct() {
print("hey");
}
}
} $m = new Math::Complex();
?》
注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。

求答案 以后为mysql的 求剩下4.5.6.7 4个语句 在线等

  • 4. select avg(sorce) from result
    后边的看不到你课表主键

  • 4)查询所有同学“数据库原理”课程的平均成绩

    SELECT AVG(score) FROM result INNER JOIN course ON course.cno = result.cno WHERE course.cname = ’数据库原理’;

    5)查询选修了“数据库原理”课程的学生的姓名

    SELECT student.sname FROM student INNER JOIN result ON result.sno = student.sno INNER JOIN course ON course.cno = result.cno WHERE course.cname = ’数据库原理’;

    6)查询没有选修“细说PHP”课程的学生姓名

    SELECT student.sname FROM student WHERE sno NOT IN (SELECT sno FROM result INNER JOIN course ON course.cno = result.cno WHERE course.cname = ’细说PHP’);

    7)查询张三同学的数据库原理课程的成绩

    SELECT score FROM result INNER JOIN student ON student.sno = result.sno INNER JOIN
    course ON course.cno = result.cno WHERE student.cname = ’张三’ AND course.cname = ’数据库原理’;

如果你还想了解更多这方面的信息,记得收藏关注本站。

细说php 4(请问一下,php4与php5区别具体有哪些,哪个比较好,请详细回答我)

本文编辑:admin

更多文章:


dul是什么意思(nsk轴承dul和sul的区别)

dul是什么意思(nsk轴承dul和sul的区别)

其实dul是什么意思的问题并不复杂,但是又很多的朋友都不太了解nsk轴承dul和sul的区别,因此呢,今天小编就来为大家分享dul是什么意思的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录nsk轴承dul和sul

2026年5月15日 15:30

中国移动个人主页(中国移动我的页面在哪打开)

中国移动个人主页(中国移动我的页面在哪打开)

本篇文章给大家谈谈中国移动个人主页,以及中国移动我的页面在哪打开对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录中国移动我的页面在哪打开中国

2026年1月3日 16:15

grocery联想记忆(grocery怎么拆分记忆)

grocery联想记忆(grocery怎么拆分记忆)

本篇文章给大家谈谈grocery联想记忆,以及grocery怎么拆分记忆对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录grocery怎么拆

2025年8月26日 06:00

gridview排序功能属性(怎么把datagridview中的自动排序功能禁用)

gridview排序功能属性(怎么把datagridview中的自动排序功能禁用)

大家好,如果您还对gridview排序功能属性不太了解,没有关系,今天就由本站为大家分享gridview排序功能属性的知识,包括怎么把datagridview中的自动排序功能禁用的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始

2025年6月15日 08:45

易语言主程序和dll通讯(C+的dll如何用易语言正确调用)

易语言主程序和dll通讯(C+的dll如何用易语言正确调用)

今天给各位分享C+的dll如何用易语言正确调用的知识,其中也会对C+的dll如何用易语言正确调用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录C+的dll如何用易语言正确调用易语言如何调用dll文件易语言如何

2026年4月8日 14:30

strut是什么车(这是什么品牌的车标)

strut是什么车(这是什么品牌的车标)

大家好,strut是什么车相信很多的网友都不是很明白,包括这是什么品牌的车标也是一样,不过没有关系,接下来就来为大家分享关于strut是什么车和这是什么品牌的车标的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录这

2026年8月3日 11:15

前端如何判断(如何判断一个前端人员的逻辑性)

前端如何判断(如何判断一个前端人员的逻辑性)

今天给各位分享如何判断一个前端人员的逻辑性的知识,其中也会对如何判断一个前端人员的逻辑性进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录如何判断一个前端人员的逻辑性前端如何判断当天是否签到怎样快速判断一个前端工

2026年9月24日 21:30

怎么制作网站ping工具(ping是什么 如何ping一个站点)

怎么制作网站ping工具(ping是什么 如何ping一个站点)

大家好,如果您还对怎么制作网站ping工具不太了解,没有关系,今天就由本站为大家分享怎么制作网站ping工具的知识,包括ping是什么 如何ping一个站点的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录ping是

2026年4月7日 09:15

前端样式网站(前端开发应该知道的几个CSS网页表单布局技巧)

前端样式网站(前端开发应该知道的几个CSS网页表单布局技巧)

今天给各位分享前端开发应该知道的几个CSS网页表单布局技巧的知识,其中也会对前端开发应该知道的几个CSS网页表单布局技巧进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录前端开发应该知道的几个CSS网页表单布局技

2026年2月10日 21:15

网址的url(网站URL:是什么)

网址的url(网站URL:是什么)

大家好,关于网址的url很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于网站URL:是什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录网站URL:是

2026年4月24日 04:30

flash模板照片幻灯片放映按钮代码解释?如何使用C#操作幻灯片

flash模板照片幻灯片放映按钮代码解释?如何使用C#操作幻灯片

大家好,如果您还对幻灯片代码不太了解,没有关系,今天就由本站为大家分享幻灯片代码的知识,包括flash模板照片幻灯片放映按钮代码解释的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录flash模板照片幻灯片放映按钮代

2025年7月24日 18:45

alarm和clock的区别(clock是什么意思英语)

alarm和clock的区别(clock是什么意思英语)

其实alarm和clock的区别的问题并不复杂,但是又很多的朋友都不太了解clock是什么意思英语,因此呢,今天小编就来为大家分享alarm和clock的区别的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录clo

2025年10月20日 22:00

delphi bit定义(delphi中如何定义TBitmap类型的变量)

delphi bit定义(delphi中如何定义TBitmap类型的变量)

各位老铁们,大家好,今天由我来为大家分享delphi bit定义,以及delphi中如何定义TBitmap类型的变量的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们

2025年11月14日 19:00

bankstatement中文(bank statement是什么意思)

bankstatement中文(bank statement是什么意思)

“bankstatement中文”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看bankstatement中文(bank statement是什么意思)!本文目录bank statement是什么意思签证所需要的bank s

2026年4月5日 01:45

linux如何编程(linux编程开发如何实现对智能手机的开发)

linux如何编程(linux编程开发如何实现对智能手机的开发)

“linux如何编程”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看linux如何编程(linux编程开发如何实现对智能手机的开发)!本文目录linux编程开发如何实现对智能手机的开发如何通过mac os系统学习linux系

2025年12月23日 13:00

compareto方法实现(java中compareto实现学生成绩排列)

compareto方法实现(java中compareto实现学生成绩排列)

大家好,今天小编来为大家解答以下的问题,关于compareto方法实现,java中compareto实现学生成绩排列这个很多人还不知道,现在让我们一起来看看吧!本文目录java中compareto实现学生成绩排列代码中是怎么调用compar

2026年4月28日 01:00

filterout(filter怎么记忆)

filterout(filter怎么记忆)

其实filterout的问题并不复杂,但是又很多的朋友都不太了解filter怎么记忆,因此呢,今天小编就来为大家分享filterout的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录filter怎么记忆filte

2026年3月30日 06:00

lodop插件怎么下载(clodop下载失败怎么回事)

lodop插件怎么下载(clodop下载失败怎么回事)

各位老铁们,大家好,今天由我来为大家分享lodop插件怎么下载,以及clodop下载失败怎么回事的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录cl

2026年3月11日 18:00

pgc中国参赛队伍(pnc全明星赛赛程)

pgc中国参赛队伍(pnc全明星赛赛程)

其实pgc中国参赛队伍的问题并不复杂,但是又很多的朋友都不太了解pnc全明星赛赛程,因此呢,今天小编就来为大家分享pgc中国参赛队伍的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录pnc全明星赛赛程PGC第三周周

2026年2月17日 03:45

win8如何重装系统(怎么重新安装win8系统|win8如何重新安装系统)

win8如何重装系统(怎么重新安装win8系统|win8如何重新安装系统)

大家好,win8如何重装系统相信很多的网友都不是很明白,包括怎么重新安装win8系统|win8如何重新安装系统也是一样,不过没有关系,接下来就来为大家分享关于win8如何重装系统和怎么重新安装win8系统|win8如何重新安装系统的一些知识

2026年5月29日 06:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索