货币问答:php5

马日磾

php4与php5区别具体有哪些?

新的对象模式PHP5 中的对象已经进行了较系统、较全面的调整,现在的样子可能看起来会有些类似于 Java。本小节着重讲述 PHP5 中新的对象模式,并举了一些较简易的例子来说明。就让本节成为你的 PHP5 之旅的一个新起点吧。:)* 构造函数和析构函数* 对象的引用* 对象的克隆* 对象中的私有、公共及受保护模式* 接口 (Interfaces)* 抽象类* __call* __set 和 __get* 静态成员构造函数和析构函数在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。在 PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct。例一:构造函数和析构函数<?phpclass 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”。对象的引用众所周知,在PHP4 中,传递变量给一个函数或方法,实际是把这个变量做了一次复制,也就意味着你传给函数或方法的是这个变量的一个副本,除非你使用了引用符号 “&” 来声明是要做一个引用,而不是一个 Copy。在 PHP5 中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。例二:对象的引用<?phpclass 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。例三:对象的克隆<?phpclass 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");?>对象克隆的方法在其它很多应用程序语言中都是存在的,所以你不必担心它的稳定性。:)对象中的私有、公共及保护模式PHP4 中,一个对象的所有方法和变量都是公共的,这意味着你可以在一个对象的外部操作其中的任意一个变量和方法。PHP5 引入了三种新的用来控制这种存取权限的模式,它们是:公共的(Public)、受保护的(Protected)及私有的(Private)。公共模式(Public):允许在对象外部进行操作控制。私有模式(Private):只允许本对象内的方法对其进行操作控制。受保护模式(Protected):允许本对象及其父对象对其进行操作控制。例四: 对象中的私有、公共及受保护模式<?phpclass 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 methodsprint("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' 关键字把需要的接口整合起来,然后再加入具体的执行代码。例五:接口<?phpinterface displayable {function display();}interface printable {function doprint();}class foo implements displayable,printable {function display() {// code} function doprint() {// code}}?>这对提高代码的可读性及通俗性有很大的帮助,通过上面的例子可以看到,对象 foo 包含了 displayable 和 printable 两个接口,这时我们就可以清楚的知道,对象 foo 一定会有一个 display() 方法和一个 print() 方法,只需要去了解接口部分,你就可以轻易的操作该对象而不必去关心对象的内部是如何运作的。抽象类抽象类不能被实例化。抽象类与其它类一样,允许定义变量及方法。抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。例六:抽象类<?phpabstract class foo {protected $x;abstract function display();function setX($x) {$this->x = $x;}}class foo2 extends foo {function display() {// Code}}?>__callPHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。例七:__call<?phpclass foo {function __call($name,$arguments) {print("Did you call me? I'm $name!");}} $x = new foo();$x->doStuff();$x->fancy_stuff();?>这个特殊的方法可以被用来实现“过载(overloading)”的动作,这样你就可以检查你的参数并且通过调用一个私有的方法来传递参数。例八:使用 __call 实现“过载”动作<?phpclass Magic {function __call($name,$arguments) {if($name=='foo') {if(is_int($arguments[0])) $this->foo_for_int($arguments[0]);if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);}} 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<?phpclass 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 中,你可以在对象的方法中指明其参数必须为另一个对象的实例。例十:类型指示<?phpclass 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)”。“对象方法” 在一个对象没有实例化前允许被调用。同样,“对象变量” 在一个对象没有实例化前可以被独立操作控制(不需要用一个对象的方法来控制)。例十一:对象方法和对象变量<?phpclass 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” 来控制程序的错误。例十二:异常处理<?phpclass 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 "nn";// Some catastrophic measure here}?>上例中,我们使用了 “try” 来执行花括号中的语句,当有错误发生的时候,代码会把错误交给 “catch” 子句来处理,在 “catch” 子句中,你需要指明要把错误交给某个对象处理,这样做可以使代码结构看起来更清晰,因为现在我们可以把所有的错误信息交给一个对象来处理。自定义错误处理你可以很方便的用自定义的处理错误的代码来控制你的程序中的意外。你仅仅需要从异常类中派生出一个自己的错误控制类,在你自己的错误控制类中,你需要有一个构造函数和一个 getMessage 方法,以下是一个例子。例十三:自定义错误处理<?phpclass 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” 部分来处理。名称空间名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。例十四:名称空间<?phpnamespace Math {class Complex {//...code...function __construct() {print("hey");}}} $m = new Math::Complex();?>注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。

推荐
不推荐
展开
收起
朱芳

php 5.3.5如何安装

从网站下载WINDOWS版本的php压缩包或安装包 (如果是安装包,可以直接安装,则以下操作基本上可以忽略。但为了更好的安全性,建议采用压缩包自己安装配置有关参数) 2. 将下载的php5.0压缩包解压到指定位置,如为C:\PHP5 3. 在c:\php5文件夹中,用记事本打开文件php.ini-dist,修改如下内容后“另存为...”php.ini文件 (1)查找到safe_mode = 段落,将safe_mode = Off修改为safe_mode = On (2)查找到expose_php = On段落,将expose_php = On修改为expose_php = Off (3)查找到display_errors = On段落,将display_errors = On修改为display_errors = Off (4)查找到extension_dir = 段落,设置动态库扩展的路径,如extension_dir = c:\php5\ext (5)查找到 ; cgi.force_redirect = 1段落,修改为 cgi.force_redirect = 0 提示:(4)和(5)是必须做的。记着要另存为php.ini 4. 将编辑好的php.ini文件剪切到Windows安装文件夹下(如:C:\Winnt 或 C:\Windows) 5. 在IIS中,选择要使用PHP的站点,右键菜单中选择“属性”,选择“主目录”标签,在该界面中点“配置”,添加或重新编辑php扩展的“应用程序扩展名映射”,可执行文件选择为C:\php5\php5isapi.dll,扩展名为php,确定应用后退出IIS配置 6. 停止IIS的WEB站点,并重新启动该站点。 提示:如果是Windows 2003,应增加WEB扩展,将PHP置为允许

推荐
不推荐
展开
收起
姜真人

php5.5怎样启用php_fileinfo支持?

fileinfo 是php的一个扩展,你需要在安装时候查看是否有这个扩展包,如果有,那就在php.ini写 extension=php_fileinfo.dll  就可以了,如果有这一行,就删除前面的分号。

PHP 是一种在服务器端执行,嵌入到HTML文档的脚本语言,早期的风格类似于C语言与Perl语言,被广泛的运用于网络开发中。PHP6是下一代PHP版本,主要特性为支持Unicode标准。2015年6月11日,PHP官网发布消息,正式公开发布PHP7第一版的alpha版本。

《PHP 5.5从零开始学(视频教学版)》循序渐进地介绍了PHP 5.5开发动态网站的主要知识和技能,提供了大量的PHPPHP应用实例供读者买践。每一章节都清晰讲述了代码作用及其编写思路,使读者能在最短时间内迅速掌握PHP的应用开发技能。全书共22章,分别介绍了PHP 5.5的基本概念、PHP服务器环境配置、PHP的基本语法、PHP的语言结构、字符串和正则表达式、数组、时间和日期、面向对象、错误处理和异常处理、PHP与Web页面交互、文件与目录操作、图形图像处理、Cookie与会话管理、MySQL数据库基础、PHP操作MySQL数据库、PDO数据库抽象类库、PHP与JavaScript综合应用、PHP与XML技术的综合应用、PHP与Ajax的综合应用、Smarty模版、Zend framework框架等,最后通过一个PHP+MySQL数据库的综合案例,使读者进一步巩固所学的知识,提高综合实战能力。

推荐
不推荐
展开
收起
赵范

php5.5如何扩展php-mysql

  php5默认不支持mysql扩展,基本设置如下: 1. php.ini设置 (1).php.ini里打开mysql扩展 extension=php_gd2.dll extension=php_mbstring.dll extension=php_mcrypt.dll extension=php_mysql.dll extension=php_mysqli.dll (2).extension_dir指向含有php_mysql.dll的目录extension_dir = "C:\php\ext\" 3. php.ini拷贝到C:\windows下面 4. libmysql.dll、php5ts.dll拷贝到c:\windows\systems32下(或者在系统PATH中添加php目录:c:\php;C:\php\ext) 5. apache配置文件httpd.conf的修改 PHPIniDir "C:/php/"

推荐
不推荐
展开
收起
花永

php5到底有什么用

可以为学习编程打个基础

推荐
不推荐
展开
收起
黄风道人

如何从php5升级到php7

很简单,你想升级到任何版本,或者回归到任意旧版本都很简单。

你可以使用PHPWAMP随机切换任意PHP版本,提供700个php版本一键切换。

PHPWAMP支持建立无限个站点绑定域名,指定站点可随意修改PHP版本,

如果域名模式和端口模式都想混合使用,也可以使用PHPWAMP。

可以自定义PHP版本,可以同时运行几百个端口模式和域名模式的站点互不影响。

PHPWAMP绿色集成环境(适合在本地,也适合在服务器上面运行)

本地搭建教程:http://jingyan.baidu.com/article/1974b289838fb1f4b1f7748d.html

服务器搭建的话,请在百度搜这个标题

“PHP绿色集成环境在云服务器上的应用,PHPWAMP在服务器上搭建网站案例”

首先来看WAMP是什么意思?

Windows下的Apache+MySQL+PHP,称为WAMP。

属于WAMP环境的集成软件有很多,比如wampserver、apmserv、xampp、PHPWAMP等等,这些WAMP环境各有特点。我推荐使用PHPWAMP这款绿色集成环境

绿色集成环境PHPWAMP特点如下:

1、真正纯绿色,集成VC不需要单独安装,下载解压即可使用。2、能同时运行多个PHP版本,随意自定义设置PHP版本,共700多个PHP版本随意切换。3、拥有开发模式与运营模式,集成组件未阉割,切换运营模式,即可直接运行在服务器端4、拥有“强制修改任意环境的Mysql数据库密码”功能,忘记数据库密码可以一键强制修改。5、运行中的网站可瞬间强制删除,也能一键干掉电脑里全部的php环境,方便重装

6、强制干掉一切环境阻碍,一键去除任意web服务器站点域名的非80端口。

7、集成网页加密等实用工具,不同PHP版本配置区分,日志分割处理等多种实用功能。

8、多功能站点管理,自动定时重启服务器,自动定时重启Apache、mysql等相关服务。

PHPWAMP自带php5.2、php5.3、php5.4、php5.5、php5.6、php7这6个默认版本,拥有共生模式(与其他环境同时使用),单身狗霸体模式,强行打通阻碍运行网站。

这篇教程文章里提供700多个PHP版本下载。(700个PHP版本一键切换)百度搜索这个文章标题:PHP集成环境如何自定义PHP版本,同时运行多个php版本一键开启模块。搜到的文章中,在文章的附件里有提供PHP历史版本下载,差不多700多个PHP版本。

推荐
不推荐
展开
收起
双探穹顶

XP系统如何安装和nginx和PHP5.3.5。

从网站下载WINDOWS版本的php压缩包或安装包 (如果是安装包,可以直接安装,则以下操作基本上可以忽略。但为了更好的安全性,建议采用压缩包自己安装配置有关参数) 2. 将下载的php5.0压缩包解压到指定位置,如为C:\PHP5 3. 在c:\php5文件夹中,用记事本打开文件php.ini-dist,修改如下内容后“另存为...”php.ini文件 (1)查找到safe_mode = 段落,将safe_mode = Off修改为safe_mode = On (2)查找到expose_php = On段落,将expose_php = On修改为expose_php = Off (3)查找到display_errors = On段落,将display_errors = On修改为display_errors = Off (4)查找到extension_dir = 段落,设置动态库扩展的路径,如extension_dir = c:\php5\ext (5)查找到 ; cgi.force_redirect = 1段落,修改为 cgi.force_redirect = 0 提示:(4)和(5)是必须做的。记着要另存为php.ini 4. 将编辑好的php.ini文件剪切到Windows安装文件夹下(如:C:\Winnt 或 C:\Windows) 5. 在IIS中,选择要使用PHP的站点,右键菜单中选择“属性”,选择“主目录”标签,在该界面中点“配置”,添加或重新编辑php扩展的“应用程序扩展名映射”,可执行文件选择为C:\php5\php5isapi.dll,扩展名为php,确定应用后退出IIS配置 6. 停止IIS的WEB站点,并重新启动该站点。 提示:如果是Windows 2003,应增加WEB扩展,将PHP置为允许

推荐
不推荐
展开
收起
唐双影

php5.5怎样启用php_fileinfo支持

fileinfo 是php的一个扩展,你需要在安装时候查看是否有这个扩展包,如果有,那就在php.ini写 extension=php_fileinfo.dll  就可以了,如果有这一行,就删除前面的分号。

PHP 是一种在服务器端执行,嵌入到HTML文档的脚本语言,早期的风格类似于C语言与Perl语言,被广泛的运用于网络开发中。PHP6是下一代PHP版本,主要特性为支持Unicode标准。2015年6月11日,PHP官网发布消息,正式公开发布PHP7第一版的alpha版本。

《PHP 5.5从零开始学(视频教学版)》循序渐进地介绍了PHP 5.5开发动态网站的主要知识和技能,提供了大量的PHPPHP应用实例供读者买践。每一章节都清晰讲述了代码作用及其编写思路,使读者能在最短时间内迅速掌握PHP的应用开发技能。全书共22章,分别介绍了PHP 5.5的基本概念、PHP服务器环境配置、PHP的基本语法、PHP的语言结构、字符串和正则表达式、数组、时间和日期、面向对象、错误处理和异常处理、PHP与Web页面交互、文件与目录操作、图形图像处理、Cookie与会话管理、MySQL数据库基础、PHP操作MySQL数据库、PDO数据库抽象类库、PHP与JavaScript综合应用、PHP与XML技术的综合应用、PHP与Ajax的综合应用、Smarty模版、Zend framework框架等,最后通过一个PHP+MySQL数据库的综合案例,使读者进一步巩固所学的知识,提高综合实战能力。

推荐
不推荐
展开
收起
名门正派

PHP4与PHP5有何不同?

php5主要在oop方面改进了PHP5使用了 Zend Engine 2,PHP4 是 Zend Engine 1可以支持 MYSQL 4.1.X 和 MYSQL 5.X.X (PHP4 不支持 4.0 之后的版本 ).更加OOP ,连 访问数据库都可以 OOP , 看来学好类是非常必要的!不在内嵌 MYSQL 库多作好多函数运行效率提高很多,本人发觉在数据库访问方面速度提高不少!PHP4与PHP5配置不同之处配置php4或者php5的过程中,php4,5的配置的步骤大致一样的,但是配置内容有一些差别。在LINUX等环境下编译,一般来说,只要编译的选项正确,配置也就正确了;在windows配置则需要注意以下不同点:1. php4ts.dll 和 php5ts.dll这个文件要拷贝到apache的bin目录下或者系统目录下2. httpd.conf 文件加载的模块示例如下:# For PHP4 + apache1.x.xxLoadModule php4_module d:/www/webserver/php4/sapi/php4apache.dllAddType application/x-httpd-php .php# For PHP4 + apache2.x.xxLoadModule php4_module d:/www/webserver/php4/sapi/php4apache2.dllAddType application/x-httpd-php .php# 其中d:/www/webserver/php4是php的所在目录。# For PHP5 + apache1.x.xxLoadModule php5_module d:/www/webserver/php5/php5apache.dllAddType application/x-httpd-php .php# For PHP5 + apache2.x.xxLoadModule php5_module d:/www/webserver/php5/php5apache2.dllAddType application/x-httpd-php .php# 其中d:/www/webserver/php5是php的所在目录。3. 加载 MySQL 的方式不同在php4以及以前的版本中,mysql是集成在php中的;而在PHP5(包括BETA)版本,mysql是作为一个模块加载的,需要设置php.ini来加载,例如extension_dir = "D:/www/WebServer/PHP5/ext/"extension=php_mysql.dll另外,PHP4,PHP5都需要系统目录下的libmysql.dll的支持,如果版本不对,即使你设置了正确的extension_dir和php_mysql.dll的参数,也会造成apache启动的时候提示phpp_mysql.dll找不到的错误。

推荐
不推荐
展开
收起
查看更多答案
收起