PHP

来自开放百科 - 灰狐
(版本间的差异)
跳转到: 导航, 搜索
 
(PHP 与 AJAX)
 
(未显示2个用户的115个中间版本)
第1行: 第1行:
[[Image:Example.jpg|right]]
+
[[Image:Php-90x90.png]]
 +
 
 +
PHP
 +
 
 +
[[Image:Zend_logo_small.gif|right]]
 +
[[Image:pear-icon.gif|right]] [[Image:pecl-icon.gif|right]]
 +
[[文件:LAMP-stack.png|right|LAMP stack]]
 +
 
 +
==简介==
 +
PHP是一种服务器端脚本语言,它是专门为Web而设计的.在一个HTML页面中,你可以嵌入PHP代码,这些代码在每次页面被访问时执行.PHP代码将在Web服务器中被解释并且生成HTML或访问者看到的其他输出.
 +
 
 +
PHP是1994年出现的,15最初只是Rasmusc Lerdorf一个人的工作.其他一些天才改进了这种语言,它经历了四次非常重要的重新编写,才变成了我们今天所看到的广为使用的.成熟的PHP.到2004年8月,PHP已经在全球的1700多万个网站域中安装,而且该数字还在不断地快速增长.
 +
 
 +
访 http://www.php.net/usage.php 站点,你可以获得当前的确切数据.
 +
 
 +
PHP是一个开放源代码的产品,这就意味着,你可以访问其源代码,也可以免费使用.修改并且再次发布.
 +
 
 +
PHP最初只是PersonalcHomecPage(个人主页)的缩写,但是后来经过修改,采用了GNU命名惯例(GNUc=Gnu Not Unix),如今它是PHP超文本预处理程序的缩写.
 +
 
 +
前,PHP的主要版本是5.该版本的Zend引擎经过了完全的重写,而且还实现了一些主要的语言改进.
 +
 
 +
[[Zend]]是专业的PHP公司,开发了PHP语言的核心引擎
 +
 
 +
[[Image:Rasmus_Lerdorf.jpg]] [http://lerdorf.com/bio.php Rasmus Lerdorf: PHP 之父]
 +
 
 +
*[https://pear.php.net/ PEAR] - PHP Extension and Application Repository
 +
*[https://pecl.php.net/ PECL] is a repository for PHP Extensions
 +
*将 PHP 带入企业级应用: [[Enterprise PHP]]
 +
 
 +
==新闻==
 +
{{SeeWikipedia}}
 +
[https://www.zend.com/resources/2022-php-landscape-report 2022 PHP Landscape Report]
 +
*此报告是对 PHP 开发专业人士的行业调查结果,讨论了 PHP 生态系统中的技术、趋势和挑战。
 +
*PHP 7 占最大的市场份额,PHP 8 也有大量采用。
 +
*PHP 正确迁移路线:PHP 5 -> PHP 7 -> PHP 8
 +
*[[WordPress]] 是 PHP 生态系统中最重量级项目,占整个市场 44.16%,紧随其后 [[Drupal]] 16.88%,[[WooCommerce]] 以15%排在第三位。可以说 WordPress 占据整个 PHP 市场半壁江山。
 +
*[[Apache HTTP Server|Apache]] 是 PHP 最佳伴侣,
 +
 
 +
==语言规范==
 +
*[https://github.com/php/php-langspec/blob/master/spec/00-specification-for-php.md Specification for PHP]
 +
*[https://wiki.php.net/rfc Request for Comments(RFC)]
 +
 
 +
==PHP 8==
 +
[[文件:php-8.1.png|right|PHP 8.1]]
 +
*[https://www.php.net/releases/8.1/en.php PHP 8.1 Released!]
 +
*[https://wiki.php.net/rfc/php8 Proposals for PHP 8]
 +
 
 +
==PHP7==
 +
*PHP7将于2015年11月12日正式发布。
 +
*[http://php7.zend.com/ PHP7 @ Zend]
 +
*[http://docs.huihoo.com/infoq/qconbeijing/2015/day2/PHP-7.pdf PHP 7 - New Engine For The Good Old Train]
 +
*[http://www.laruence.com/ 鸟哥,PHP7核心开发者,他的博客要看]
 +
*[http://www.laruence.com/2015/06/19/3063.html 让你的PHP7更快(GCC PGO)]
 +
*[http://www.laruence.com/2014/12/18/2976.html PHP7 VS HHVM (WordPress)]
 +
*[https://github.com/pangee/Migrating-from-PHP5.6.x-to-PHP7.0.x PHP 5.6.x 版本迁移至 PHP 7.0.x 版本]
 +
 
 +
==PHP6==
 +
新特征:
 +
*1、支持Unicode。Unicode是有其必然,虽然Unicode占用较多的空间,但Unicode带来的便利性,远超过占用空间的缺点,尤其在国际化的今天,硬件设备越来越强大,网速也大幅度的提升,这么一点小小的缺点是可以忽略的。另外一点,PHP也可以在.ini文件中设定能不能开启支持Unicode,决定权在你自己,这是一个不错的点子,关掉Unicode的支持,PHP的性能并不会有大幅度的提升,主要的影响在于需要引用字符串的函数。
 +
*2、Register Globals 将被移除这是一个主要的决定,老的PHP使用者会觉得Register Globals蛮方便的,但是却忽略了Register Globals会带来程序上安全性的隐患,大多数的主机上此项功能是关闭的,印象中从PHP4.3.x版开始,此项默认配置值即是关闭状态,PHP6正式移除Register Globals也代表着如果程序是PHP3时代的产物,将完全不能运用,除了改写用途外,别无他法。
 +
*3、Magic Quotes 将取消Magic Quotes主要是自动转义须要转义的字符,此项功能移除也符合大多数PHP开发者的心声。
 +
*4、Safe Mode 取消。老实说,这个模式不知道哪里不好,取消就取消吧,反正也用不到。
 +
*5、’var’ 别名为 ‘public’,在类中的var声明变成public的别名,相信是为了兼容PHP5而作的决定,PHP6现在也可以称作为OO语言了。
 +
*6、通过引用返回将出错未来通过引用返回编译器将会报错 例如$a =& new b()、function &c(),OO语言默认就是引用,所以不须要再运用 &了。
 +
*7、zend.ze1 compatbility mode 将被移去(Zend.ze1相容模式将被移去),PHP5是为兼容旧有PHP4,所以在.ini中可选择是否开启相容模式,原由在于PHP5运用的是第二代分析引擎,但是相容模式并不是百分之百能分析 PHP4语法,所以旧时代的产物,移除。
 +
*8、Freetype 1 and GD 1 support 将不见这两个Libs存在了很久,php6将不再支持,况且GD1早已被现在的GD2取代了。
 +
*9、dl() 被移到 SAPI 中dl()主要是让设计师加载extension Libs,现在被移到 SAPI 中。
 +
*10、Register Long Array 去除 从PHP5起默认是关闭,在PHP6中正式移除。
 +
*11、一些Extension的变更例如 XMLReader 和 XMLWriter 将不再是以Extension的方式出现,他们将被移入到PHP的核心之中,并且默认是开启,eregextension将被放入PECL,代表着它将被移出PHP核心,这也是为了让路给新的正则表达式extension,此外,Fileinfo extension 也将被导入PHP的核心之中。
 +
*12、APC将被导入核心这是一个提高PHP性能的功能,现在它将被放入PHP核心中,并且可以选择是否启用APC。
 +
*13、告别ASP风格的起始标签原来是为了取悦ASP开发者转向运用 PHP,现今已经不再须要这种做法了。
 +
 
 +
==PHP5==
 +
自 PHP 5 起完全重写了对象模型以得到更佳性能和更多特性。这是自 PHP 4 以来的最大变化。PHP 5 具有完整的对象模型。
 +
 
 +
PHP 5 中的新特性包括访问控制,抽象类和 final 类与方法,附加的魔术方法,接口,对象复制和类型约束。
 +
 
 +
PHP 对待对象的方式与引用和句柄相同,即每个变量都持有对象的引用,而不是整个对象的拷贝。详见:[http://docs.huihoo.com/php/manual/2014-05-09/chinese/language.oop5.html 类与对象]
 +
 
 +
*[http://docs.huihoo.com/php/manual/2014-05-09/chinese/faq.migration5.html 从 PHP 4 移植到 PHP 5]
 +
*http://derickrethans.nl/pres-breaking/talk.html
 +
 
 +
==PHP4==
 +
[[Zend Engine]] 1是PHP 4所有版本使用的内部引擎。它的维护已停止,但是PHP 4仍然在被广泛使用中。
 +
 
 +
==编译==
 +
./configure --prefix=/usr/local/php5 --enable-fastcgi --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --disable-pdo --with-pgsql --with-curl --disable-debug --enable-pic --disable- rpath --enable-inline-optimization --with-bz2 --with-xml --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with- mhash --enable-xslt --enable-memcache --enable-zip --with-pcre-regex
 +
 
 +
==iconv==
 +
iconv -f gb2312 -t utf-8 -c forum-gb2312.sql > forum-utf8.sql
 +
ok, cool :)
 +
 
 +
==Eclipse==
 +
使用 [[Aptana]] 进行 PHP 应用开发。
 +
 
 +
==项目==
 +
[[文件:php-mvc.png|right|thumb|PHP MVC]]
 +
*[https://github.com/ziadoz/awesome-php Awesome PHP] [[文件:Awesome.png]]
 +
*[[PHP ecosystem]]
 +
*[[CakePHP]]
 +
*[[Symfony]]
 +
*[[PHP on Trax]]
 +
*[[Code Igniter]]
 +
*[[Biscuit]]
 +
*[[Pipeline]]
 +
*[[PRADO]]
 +
*[[BlueShoes]]
 +
*[[Zend Framework]]
 +
*[[AjaxAC]]
 +
*[[P4A]]
 +
*[[Web_Application_Component_Toolkit|WACT]]
 +
*[[Horde]]
 +
*[[Seagull]]
 +
*[[studs]]
 +
*[[php.MVC]]
 +
*[[Phrame]]
 +
*[[Ambivalence]]
 +
*[[binarycloud]]
 +
*[[rwfphp]]
 +
*[[FastFrame]]
 +
*[[Krysalis]]
 +
*[[LogiCreate]]
 +
*[[Brim]]
 +
*[[MMCache]]
 +
*[[PHPXref]]
 +
*[[Smarty]]
 +
*[https://github.com/tencent-php/tsf Tencent Server Framework] 业务逻辑服务协程框架
 +
*[[Swoole]]
 +
 
 +
==编译器虚拟机==
 +
PHP编译器、虚拟机
 +
*[[HHVM]]
 +
*[[Zend]]
 +
*[https://github.com/peachpiecompiler/peachpie Peachpie] - the PHP 7 compiler and runtime for .NET and .NET Core
 +
 
 +
==Pear==
 +
*[[PEAR]] - [http://pear.php.net/ PHP Extension and Application Repository]
 +
*[http://docs.huihoo.com/php/pear/ PEAR Manual]
 +
 
 +
安装 Pear
 +
download http://pear.php.net/install-pear.phar to php-src/pear/
 +
# make install-su
 +
 
 +
==Pecl==
 +
The PHP Extension Community Library contains PHP extensions written in C.
 +
*http://pecl.php.net/
 +
 
 +
==PHP 设计模式==
 +
*工厂模式
 +
[[Image:php_factory.gif]]
 +
*单体模式
 +
[[Image:php_singleton.gif]]
 +
*观察者模式
 +
[[Image:php_observer.gif]]
 +
*命令链模式
 +
[[Image:php_chain.gif]]
 +
*策略模式
 +
[[Image:php_strategy.gif]]
 +
 
 +
更多细节: http://www-128.ibm.com/developerworks/cn/opensource/os-php-designptrns/
 +
 
 +
==PHP 与 AJAX==
 +
*Ajax Toolkit for PHP - SAJAX - http://www.modernmethod.com/sajax/
 +
 
 +
==数据库==
 +
*[https://mariadb.com/resources/blog/developer-quickstart-php-data-objects-and-mariadb/ Developer Quickstart: PHP Data Objects and MariaDB]
 +
 
 +
==文档==
 +
*[https://github.com/php/doc-zh PHP 中文手册 @ GitHub]
 +
*[http://www.oracle.com/technology/global/cn/pub/notes/technote_as_signoff.html 使用 PHP 创建定制 SSO 登录页面和注销页面]
 +
*PHP 程序加速探索 - http://x.discuz.net/174393/viewspace_47001.html
 +
 
 +
==Windows==
 +
*[[XAMPP]]
 +
*[[WAMP]]
 +
 
 +
==Debian==
 +
[https://computingforgeeks.com/how-to-install-php-7-3-on-debian-9-debian-8/ How To Install PHP 7.3 on Debian 9 / Debian 8]
 +
 
 +
/etc/cron.d/php4
 +
# Look for and purge old sessions every 30 minutes
 +
09,39 *    * * *    root  [ -d /var/lib/php4 ] && find /var/lib/php4/ -type f -cmin +$(/usr/lib/php4/maxlifetime) -print0 |
 +
xargs -r -0 rm
 +
 
 +
==游戏==
 +
*[[DotK WebGame Engine]]
 +
 
 +
==包管理==
 +
[[文件:packagist-logo.png|right|Packagist]]
 +
*[[Composer]]
 +
*[https://packagist.org/ Packagist] The PHP Package Repository
 +
 
 +
==RPM repository==
 +
[https://rpms.remirepo.net/ Remi's RPM repository]
 +
 
 +
How to Install PHP 7.4 on CentOS 8 / RHEL 8
 +
$ sudo dnf install epel-release -y
 +
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
 +
$ dnf module list php
 +
$ sudo dnf module enable php:remi-7.4
 +
$ sudo dnf install php php-cli php-common
 +
$ php -v
 +
$ sudo systemctl start php-fpm
 +
$ sudo systemctl enable php-fpm
 +
$ sudo vi /etc/php.ini
 +
$ sudo systemctl restart httpd
 +
 
 +
==图集==
 +
<gallery>
 +
image:pear-package-statistics.png|PEAR包统计
 +
image:pecl-package-statistics.png|PECL包统计
 +
image:weibo-mapi.png|微博MAPI
 +
image:php7-swoole-phalcon-redis-dynamodb.png|高性能配置
 +
image:php-elephant.png|PHP
 +
image:zend-compare-php-support-zend-server.jpg|社区和Zend支持区别
 +
</gallery>
 +
 
 +
==链接==
 +
*[http://www.php.net/ PHP官网]
 +
*[http://talks.php.net/ PHP Presentation System]
 +
*[http://www.php.net/links.php PHP Related Links]
 +
*http://www.zend.com/
 +
*http://www.hotscripts.com/PHP/
 +
*http://php.resourceindex.com/
 +
*[http://www.phpchina.cn/ PHP China]
 +
*[http://www.phpe.net/ Exceed PHP]
 +
*[http://www.phpx.com/ 中国PHP联盟]
 +
*[http://www-128.ibm.com/developerworks/cn/opensource/top-projects/php-resources.html developerWorks 中国 PHP项目资源]
 +
*[[Huihoo PHP Applications]]
 +
*[http://docs.huihoo.com/php/ PHP开放文档]
 +
 
 +
==相关书籍==
 +
*深入理解PHP内核([[Thinking In PHP Internal]]) 开放图书项目
 +
*[http://en.wikibooks.org/wiki/PHP_Programming PHP Programming]
 +
*[[Image:php-mysql-web-development.gif]] [http://www.huihoo.com/php/phpmysqlwd3e/start.html 源码和ebook下载]
 +
*[[PHP and MySQL Web Development|PHP和MySQL Web 开发(原书第3版)]]
 +
 
 +
[[category:programming language]]
 +
[[category:c programming language]]
 +
[[category:PHP]]
 +
[[category:Huihoo Foundation]]

2022年4月10日 (日) 16:12的最后版本

Php-90x90.png

PHP

Zend logo small.gif
Pear-icon.gif
Pecl-icon.gif
LAMP stack

目录

[编辑] 简介

PHP是一种服务器端脚本语言,它是专门为Web而设计的.在一个HTML页面中,你可以嵌入PHP代码,这些代码在每次页面被访问时执行.PHP代码将在Web服务器中被解释并且生成HTML或访问者看到的其他输出.

PHP是1994年出现的,15最初只是Rasmusc Lerdorf一个人的工作.其他一些天才改进了这种语言,它经历了四次非常重要的重新编写,才变成了我们今天所看到的广为使用的.成熟的PHP.到2004年8月,PHP已经在全球的1700多万个网站域中安装,而且该数字还在不断地快速增长.

访 http://www.php.net/usage.php 站点,你可以获得当前的确切数据.

PHP是一个开放源代码的产品,这就意味着,你可以访问其源代码,也可以免费使用.修改并且再次发布.

PHP最初只是PersonalcHomecPage(个人主页)的缩写,但是后来经过修改,采用了GNU命名惯例(GNUc=Gnu Not Unix),如今它是PHP超文本预处理程序的缩写.

前,PHP的主要版本是5.该版本的Zend引擎经过了完全的重写,而且还实现了一些主要的语言改进.

Zend是专业的PHP公司,开发了PHP语言的核心引擎

Rasmus Lerdorf.jpg Rasmus Lerdorf: PHP 之父

  • PEAR - PHP Extension and Application Repository
  • PECL is a repository for PHP Extensions
  • 将 PHP 带入企业级应用: Enterprise PHP

[编辑] 新闻

Wikipedia-35x35.png 您可以在Wikipedia上了解到此条目的英文信息 PHP Thanks, Wikipedia.

2022 PHP Landscape Report

  • 此报告是对 PHP 开发专业人士的行业调查结果,讨论了 PHP 生态系统中的技术、趋势和挑战。
  • PHP 7 占最大的市场份额,PHP 8 也有大量采用。
  • PHP 正确迁移路线:PHP 5 -> PHP 7 -> PHP 8
  • WordPress 是 PHP 生态系统中最重量级项目,占整个市场 44.16%,紧随其后 Drupal 16.88%,WooCommerce 以15%排在第三位。可以说 WordPress 占据整个 PHP 市场半壁江山。
  • Apache 是 PHP 最佳伴侣,

[编辑] 语言规范

[编辑] PHP 8

PHP 8.1

[编辑] PHP7

[编辑] PHP6

新特征:

  • 1、支持Unicode。Unicode是有其必然,虽然Unicode占用较多的空间,但Unicode带来的便利性,远超过占用空间的缺点,尤其在国际化的今天,硬件设备越来越强大,网速也大幅度的提升,这么一点小小的缺点是可以忽略的。另外一点,PHP也可以在.ini文件中设定能不能开启支持Unicode,决定权在你自己,这是一个不错的点子,关掉Unicode的支持,PHP的性能并不会有大幅度的提升,主要的影响在于需要引用字符串的函数。
  • 2、Register Globals 将被移除这是一个主要的决定,老的PHP使用者会觉得Register Globals蛮方便的,但是却忽略了Register Globals会带来程序上安全性的隐患,大多数的主机上此项功能是关闭的,印象中从PHP4.3.x版开始,此项默认配置值即是关闭状态,PHP6正式移除Register Globals也代表着如果程序是PHP3时代的产物,将完全不能运用,除了改写用途外,别无他法。
  • 3、Magic Quotes 将取消Magic Quotes主要是自动转义须要转义的字符,此项功能移除也符合大多数PHP开发者的心声。
  • 4、Safe Mode 取消。老实说,这个模式不知道哪里不好,取消就取消吧,反正也用不到。
  • 5、’var’ 别名为 ‘public’,在类中的var声明变成public的别名,相信是为了兼容PHP5而作的决定,PHP6现在也可以称作为OO语言了。
  • 6、通过引用返回将出错未来通过引用返回编译器将会报错 例如$a =& new b()、function &c(),OO语言默认就是引用,所以不须要再运用 &了。
  • 7、zend.ze1 compatbility mode 将被移去(Zend.ze1相容模式将被移去),PHP5是为兼容旧有PHP4,所以在.ini中可选择是否开启相容模式,原由在于PHP5运用的是第二代分析引擎,但是相容模式并不是百分之百能分析 PHP4语法,所以旧时代的产物,移除。
  • 8、Freetype 1 and GD 1 support 将不见这两个Libs存在了很久,php6将不再支持,况且GD1早已被现在的GD2取代了。
  • 9、dl() 被移到 SAPI 中dl()主要是让设计师加载extension Libs,现在被移到 SAPI 中。
  • 10、Register Long Array 去除 从PHP5起默认是关闭,在PHP6中正式移除。
  • 11、一些Extension的变更例如 XMLReader 和 XMLWriter 将不再是以Extension的方式出现,他们将被移入到PHP的核心之中,并且默认是开启,eregextension将被放入PECL,代表着它将被移出PHP核心,这也是为了让路给新的正则表达式extension,此外,Fileinfo extension 也将被导入PHP的核心之中。
  • 12、APC将被导入核心这是一个提高PHP性能的功能,现在它将被放入PHP核心中,并且可以选择是否启用APC。
  • 13、告别ASP风格的起始标签原来是为了取悦ASP开发者转向运用 PHP,现今已经不再须要这种做法了。

[编辑] PHP5

自 PHP 5 起完全重写了对象模型以得到更佳性能和更多特性。这是自 PHP 4 以来的最大变化。PHP 5 具有完整的对象模型。

PHP 5 中的新特性包括访问控制,抽象类和 final 类与方法,附加的魔术方法,接口,对象复制和类型约束。

PHP 对待对象的方式与引用和句柄相同,即每个变量都持有对象的引用,而不是整个对象的拷贝。详见:类与对象

[编辑] PHP4

Zend Engine 1是PHP 4所有版本使用的内部引擎。它的维护已停止,但是PHP 4仍然在被广泛使用中。

[编辑] 编译

./configure --prefix=/usr/local/php5 --enable-fastcgi --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --disable-pdo --with-pgsql --with-curl --disable-debug --enable-pic --disable- rpath --enable-inline-optimization --with-bz2 --with-xml --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with- mhash --enable-xslt --enable-memcache --enable-zip --with-pcre-regex

[编辑] iconv

iconv -f gb2312 -t utf-8 -c forum-gb2312.sql > forum-utf8.sql 
ok, cool :)

[编辑] Eclipse

使用 Aptana 进行 PHP 应用开发。

[编辑] 项目

PHP MVC

[编辑] 编译器虚拟机

PHP编译器、虚拟机

[编辑] Pear

安装 Pear

download http://pear.php.net/install-pear.phar to php-src/pear/ 
# make install-su

[编辑] Pecl

The PHP Extension Community Library contains PHP extensions written in C.

[编辑] PHP 设计模式

  • 工厂模式

Php factory.gif

  • 单体模式

Php singleton.gif

  • 观察者模式

Php observer.gif

  • 命令链模式

Php chain.gif

  • 策略模式

Php strategy.gif

更多细节: http://www-128.ibm.com/developerworks/cn/opensource/os-php-designptrns/

[编辑] PHP 与 AJAX

[编辑] 数据库

[编辑] 文档

[编辑] Windows

[编辑] Debian

How To Install PHP 7.3 on Debian 9 / Debian 8

/etc/cron.d/php4

# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -d /var/lib/php4 ] && find /var/lib/php4/ -type f -cmin +$(/usr/lib/php4/maxlifetime) -print0 | 
xargs -r -0 rm

[编辑] 游戏

[编辑] 包管理

Packagist

[编辑] RPM repository

Remi's RPM repository

How to Install PHP 7.4 on CentOS 8 / RHEL 8

$ sudo dnf install epel-release -y
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
$ dnf module list php
$ sudo dnf module enable php:remi-7.4
$ sudo dnf install php php-cli php-common
$ php -v
$ sudo systemctl start php-fpm
$ sudo systemctl enable php-fpm
$ sudo vi /etc/php.ini
$ sudo systemctl restart httpd

[编辑] 图集

[编辑] 链接

[编辑] 相关书籍

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱