PHP
2021-04-12
{
"4.0": {
"4.0.0": "2000-05-22",
"4.0.1": "2000-06-28",
"4.0.2": "2000-08-29",
"4.0.3": "2000-10-11",
"4.0.4": "2000-12-19",
"4.0.5": "2001-04-30",
"4.0.6": "2001-06-23"
},
"4.1": {
"4.1.0": "2001-12-10",
"4.1.1": "2001-12-26",
"4.1.2": "2002-02-27"
},
"4.2": {
"4.2.0": "2002-04-22",
"4.2.1": "2002-05-13",
"4.2.2": "2002-07-22",
"4.2.3": "2002-09-06"
},
"4.3": {
"4.3.0": "2002-12-27",
"4.3.1": "2003-02-17",
"4.3.2": "2003-05-29",
"4.3.3": "2003-08-25",
"4.3.4": "2003-11-03",
"4.3.5": "2004-03-26",
"4.3.6": "2004-04-15",
"4.3.7": "2004-06-03",
"4.3.8": "2004-07-13",
"4.3.9": "2004-09-22",
"4.3.10": "2004-12-14",
"4.3.11": "2005-03-31"
},
"4.4": {
"4.4.0": "2005-07-11",
"4.4.1": "2005-10-31",
"4.4.2": "2006-01-11",
"4.4.3": "2006-08-03",
"4.4.4": "2006-08-17",
"4.4.5": "2007-02-14",
"4.4.6": "2007-03-01",
"4.4.7": "2007-05-03",
"4.4.8": "2008-01-03",
"4.4.9": "2008-08-07"
},
"5.0": {
"5.0.0": "2004-07-13",
"5.0.1": "2004-08-12",
"5.0.2": "2004-09-23",
"5.0.3": "2004-12-15",
"5.0.4": "2005-03-31",
"5.0.5": "2005-09-05"
},
"5.1": {
"5.1.0": "2005-11-24",
"5.1.1": "2005-11-28",
"5.1.2": "2006-01-12",
"5.1.3": "2006-05-02",
"5.1.4": "2006-05-04",
"5.1.5": "2006-08-17",
"5.1.6": "2006-08-24"
},
"5.2": {
"5.2.0": "2006-11-02",
"5.2.1": "2007-02-08",
"5.2.2": "2007-05-03",
"5.2.3": "2007-05-31",
"5.2.4": "2007-08-30",
"5.2.5": "2007-11-08",
"5.2.6": "2008-05-01",
"5.2.7": "2008-12-04",
"5.2.8": "2008-12-08",
"5.2.9": "2009-02-26",
"5.2.10": "2009-06-18",
"5.2.11": "2009-09-16",
"5.2.12": "2009-12-17",
"5.2.13": "2010-02-25",
"5.2.14": "2010-07-22",
"5.2.15": "2010-12-08",
"5.2.16": "2010-12-16",
"5.2.17": "2011-01-06"
},
"5.3": {
"5.3.0": "2009-06-30",
"5.3.1": "2009-11-19",
"5.3.2": "2010-03-04",
"5.3.3": "2010-07-22",
"5.3.4": "2010-12-09",
"5.3.5": "2011-01-06",
"5.3.6": "2011-03-17",
"5.3.7": "2011-08-18",
"5.3.8": "2011-08-23",
"5.3.9": "2012-01-10",
"5.3.10": "2012-02-02",
"5.3.11": "2012-04-26",
"5.3.12": "2012-05-03",
"5.3.13": "2012-05-08",
"5.3.14": "2012-06-06",
"5.3.15": "2012-07-19",
"5.3.16": "2012-08-16",
"5.3.17": "2012-09-13",
"5.3.18": "2012-10-18",
"5.3.19": "2012-11-22",
"5.3.20": "2012-12-20",
"5.3.21": "2013-01-17",
"5.3.22": "2013-02-21",
"5.3.23": "2013-03-14",
"5.3.24": "2013-04-11",
"5.3.25": "2013-05-09",
"5.3.26": "2013-06-06",
"5.3.27": "2013-07-11",
"5.3.28": "2013-12-12",
"5.3.29": "2014-08-14"
},
"5.4": {
"5.4.0": "2012-03-01",
"5.4.1": "2012-04-26",
"5.4.2": "2012-05-03",
"5.4.3": "2012-05-08",
"5.4.4": "2012-06-06",
"5.4.5": "2012-07-19",
"5.4.6": "2012-08-16",
"5.4.7": "2012-09-13",
"5.4.8": "2012-10-18",
"5.4.9": "2012-11-22",
"5.4.10": "2012-12-20",
"5.4.11": "2013-01-17",
"5.4.12": "2013-02-21",
"5.4.13": "2013-03-14",
"5.4.14": "2013-04-11",
"5.4.15": "2013-05-09",
"5.4.16": "2013-06-06",
"5.4.17": "2013-07-04",
"5.4.18": "2013-08-15",
"5.4.19": "2013-08-22",
"5.4.20": "2013-09-19",
"5.4.21": "2013-10-17",
"5.4.22": "2013-11-14",
"5.4.23": "2013-12-12",
"5.4.24": "2014-01-09",
"5.4.25": "2014-02-06",
"5.4.26": "2014-03-06",
"5.4.27": "2014-04-03",
"5.4.28": "2014-05-01",
"5.4.29": "2014-05-29",
"5.4.30": "2014-06-26",
"5.4.31": "2014-07-24",
"5.4.32": "2014-08-21",
"5.4.33": "2014-09-18",
"5.4.34": "2014-10-16",
"5.4.35": "2014-11-13",
"5.4.36": "2014-12-18",
"5.4.37": "2015-01-22",
"5.4.38": "2015-02-19",
"5.4.39": "2015-03-19",
"5.4.40": "2015-04-16",
"5.4.41": "2015-05-14",
"5.4.42": "2015-06-11",
"5.4.43": "2015-07-09",
"5.4.44": "2015-08-06",
"5.4.45": "2015-09-03"
},
"5.5": {
"5.5.0": "2013-06-20",
"5.5.1": "2013-07-18",
"5.5.2": "2013-08-15",
"5.5.3": "2013-08-22",
"5.5.4": "2013-09-19",
"5.5.5": "2013-10-17",
"5.5.6": "2013-11-14",
"5.5.7": "2013-12-12",
"5.5.8": "2014-01-09",
"5.5.9": "2014-02-06",
"5.5.10": "2014-03-06",
"5.5.11": "2014-04-03",
"5.5.12": "2014-05-01",
"5.5.13": "2014-05-29",
"5.5.14": "2014-06-26",
"5.5.15": "2014-07-24",
"5.5.16": "2014-08-21",
"5.5.17": "2014-09-18",
"5.5.18": "2014-10-16",
"5.5.19": "2014-11-13",
"5.5.20": "2014-12-18",
"5.5.21": "2015-01-22",
"5.5.22": "2015-02-19",
"5.5.23": "2015-03-19",
"5.5.24": "2015-04-16",
"5.5.25": "2015-05-14",
"5.5.26": "2015-06-11",
"5.5.27": "2015-07-09",
"5.5.28": "2015-08-06",
"5.5.29": "2015-09-03",
"5.5.30": "2015-10-01",
"5.5.31": "2016-01-07",
"5.5.32": "2016-02-04",
"5.5.33": "2016-03-03",
"5.5.34": "2016-03-31",
"5.5.35": "2016-04-28",
"5.5.36": "2016-05-26",
"5.5.37": "2016-06-23",
"5.5.38": "2016-07-21"
},
"5.6": {
"5.6.0": "2014-08-28",
"5.6.1": "2014-10-02",
"5.6.2": "2014-10-16",
"5.6.3": "2014-11-13",
"5.6.4": "2014-12-18",
"5.6.5": "2015-01-22",
"5.6.6": "2015-02-19",
"5.6.7": "2015-03-19",
"5.6.8": "2015-04-16",
"5.6.9": "2015-05-14",
"5.6.10": "2015-06-11",
"5.6.11": "2015-07-10",
"5.6.12": "2015-08-06",
"5.6.13": "2015-09-03",
"5.6.14": "2015-10-01",
"5.6.15": "2015-10-29",
"5.6.16": "2015-11-26",
"5.6.17": "2016-01-07",
"5.6.18": "2016-02-04",
"5.6.19": "2016-03-03",
"5.6.20": "2016-03-31",
"5.6.21": "2016-04-28",
"5.6.22": "2016-05-26",
"5.6.23": "2016-06-23",
"5.6.24": "2016-07-21",
"5.6.25": "2016-08-18",
"5.6.26": "2016-09-15",
"5.6.27": "2016-10-13",
"5.6.28": "2016-11-10",
"5.6.29": "2016-12-08",
"5.6.30": "2017-01-19",
"5.6.31": "2017-07-06",
"5.6.32": "2017-10-26",
"5.6.33": "2018-01-04",
"5.6.34": "2018-03-01",
"5.6.35": "2018-03-29",
"5.6.36": "2018-04-26",
"5.6.37": "2018-07-19",
"5.6.38": "2018-09-13",
"5.6.39": "2018-12-06",
"5.6.40": "2019-01-10"
},
"7.0": {
"7.0.0": "2015-12-03",
"7.0.1": "2015-12-17",
"7.0.2": "2016-01-07",
"7.0.3": "2016-02-04",
"7.0.4": "2016-03-03",
"7.0.5": "2016-03-31",
"7.0.6": "2016-04-28",
"7.0.7": "2016-05-26",
"7.0.8": "2016-06-23",
"7.0.9": "2016-07-21",
"7.0.10": "2016-08-18",
"7.0.11": "2016-09-15",
"7.0.12": "2016-10-13",
"7.0.13": "2016-11-10",
"7.0.14": "2016-12-08",
"7.0.15": "2017-01-19",
"7.0.16": "2017-02-16",
"7.0.17": "2017-03-16",
"7.0.18": "2017-04-13",
"7.0.19": "2017-05-11",
"7.0.20": "2017-06-08",
"7.0.21": "2017-07-06",
"7.0.22": "2017-08-03",
"7.0.23": "2017-08-31",
"7.0.24": "2017-09-28",
"7.0.25": "2017-10-26",
"7.0.26": "2017-11-23",
"7.0.27": "2018-01-04",
"7.0.28": "2018-03-01",
"7.0.29": "2018-03-29",
"7.0.30": "2018-04-26",
"7.0.31": "2018-07-19",
"7.0.32": "2018-09-13",
"7.0.33": "2018-12-06"
},
"7.1": {
"7.1.0": "2016-12-01",
"7.1.1": "2017-01-19",
"7.1.2": "2017-02-16",
"7.1.3": "2017-03-16",
"7.1.4": "2017-04-13",
"7.1.5": "2017-05-11",
"7.1.6": "2017-06-07",
"7.1.7": "2017-07-06",
"7.1.8": "2017-08-03",
"7.1.9": "2017-08-31",
"7.1.10": "2017-09-28",
"7.1.11": "2017-10-26",
"7.1.12": "2017-11-23",
"7.1.13": "2018-01-04",
"7.1.14": "2018-02-01",
"7.1.15": "2018-03-01",
"7.1.16": "2018-03-29",
"7.1.17": "2018-04-26",
"7.1.18": "2018-05-24",
"7.1.19": "2018-06-22",
"7.1.20": "2018-07-19",
"7.1.21": "2018-08-16",
"7.1.22": "2018-09-13",
"7.1.23": "2018-10-11",
"7.1.24": "2018-11-08",
"7.1.25": "2018-12-06",
"7.1.26": "2019-01-10",
"7.1.27": "2019-03-07",
"7.1.28": "2019-04-04",
"7.1.29": "2019-05-02",
"7.1.30": "2019-05-30",
"7.1.31": "2019-08-01",
"7.1.32": "2019-08-29",
"7.1.33": "2019-10-24"
},
"7.2": {
"7.2.0": "2017-11-30",
"7.2.1": "2018-01-04",
"7.2.2": "2018-02-01",
"7.2.3": "2018-03-01",
"7.2.4": "2018-03-29",
"7.2.5": "2018-04-26",
"7.2.6": "2018-05-24",
"7.2.7": "2018-06-21",
"7.2.8": "2018-07-19",
"7.2.9": "2018-08-16",
"7.2.10": "2018-09-13",
"7.2.11": "2018-10-11",
"7.2.12": "2018-11-08",
"7.2.13": "2018-12-06",
"7.2.14": "2019-01-10",
"7.2.15": "2019-02-07",
"7.2.16": "2019-03-07",
"7.2.17": "2019-04-04",
"7.2.18": "2019-05-02",
"7.2.19": "2019-05-30",
"7.2.20": "2019-07-04",
"7.2.21": "2019-08-01",
"7.2.22": "2019-08-29",
"7.2.23": "2019-09-26",
"7.2.24": "2019-10-24",
"7.2.25": "2019-11-21",
"7.2.26": "2019-12-18",
"7.2.27": "2020-01-23",
"7.2.28": "2020-02-20",
"7.2.29": "2020-03-19",
"7.2.30": "2020-04-16",
"7.2.31": "2020-05-14",
"7.2.32": "2020-07-09",
"7.2.33": "2020-08-06",
"7.2.34": "2020-10-01"
},
"7.3": {
"7.3.0": "2018-12-06",
"7.3.1": "2019-01-10",
"7.3.2": "2019-02-07",
"7.3.3": "2019-03-07",
"7.3.4": "2019-04-04",
"7.3.5": "2019-05-02",
"7.3.6": "2019-05-30",
"7.3.7": "2019-07-04",
"7.3.8": "2019-08-01",
"7.3.9": "2019-08-29",
"7.3.10": "2019-09-26",
"7.3.11": "2019-10-24",
"7.3.12": "2019-11-21",
"7.3.13": "2019-12-18",
"7.3.14": "2020-01-23",
"7.3.15": "2020-02-20",
"7.3.16": "2020-03-19",
"7.3.17": "2020-04-16",
"7.3.18": "2020-05-14",
"7.3.19": "2020-06-11",
"7.3.20": "2020-07-09",
"7.3.21": "2020-08-06",
"7.3.22": "2020-09-03",
"7.3.23": "2020-10-01",
"7.3.24": "2020-10-29",
"7.3.25": "2020-11-26",
"7.3.26": "2021-01-07",
"7.3.27": "2021-02-04",
"7.3.28": "2021-04-29",
"7.3.29": "2021-07-01",
"7.3.30": "2021-08-26",
"7.3.31": "2021-09-23"
},
"7.4": {
"7.4.0": "2019-11-28",
"7.4.1": "2019-12-18",
"7.4.2": "2020-01-23",
"7.4.3": "2020-02-20",
"7.4.4": "2020-03-19",
"7.4.5": "2020-04-16",
"7.4.6": "2020-05-14",
"7.4.7": "2020-06-11",
"7.4.8": "2020-07-09",
"7.4.9": "2020-08-06",
"7.4.10": "2020-09-03",
"7.4.11": "2020-10-01",
"7.4.12": "2020-10-29",
"7.4.13": "2020-11-26",
"7.4.14": "2021-01-07",
"7.4.15": "2021-02-04",
"7.4.16": "2021-03-04",
"7.4.18": "2021-04-29",
"7.4.19": "2021-05-06",
"7.4.20": "2021-06-03",
"7.4.21": "2021-07-01",
"7.4.22": "2021-07-29",
"7.4.23": "2021-08-26",
"7.4.24": "2021-09-23"
},
"8.0": {
"8.0.0": "2020-11-26",
"8.0.1": "2021-01-07",
"8.0.2": "2021-02-04",
"8.0.3": "2021-03-04",
"8.0.5": "2021-04-29",
"8.0.6": "2021-05-06",
"8.0.7": "2021-06-03",
"8.0.8": "2021-07-01",
"8.0.9": "2021-07-29",
"8.0.10": "2021-08-26",
"8.0.11": "2021-09-23"
}
}
PHP
2011-11-10
魔术常量
https://php.net/manual/zh/language.constants.predefined.php
__LINE__
文件中的当前行号。
__FILE__
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
__DIR__
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)
__FUNCTION__
函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。
__CLASS__
类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。
__METHOD__
类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__
当前命名空间的名称(大小写敏感)。这个常量是在编译时定义的(PHP 5.3.0 新增)
魔术方法
https://php.net/manual/zh/language.oop5.magic.php
约十三个有特殊含义的方法:
__construct()
、 __destruct()
、 __call()
、 __callStatic()
、 __get()
、
__set()
、 __isset()
、 __unset()
、 __sleep()
、 __wakeup()
、 __toString()
、
__invoke()
、 __set_state()
、 __clone()
这些方法在PHP中被称为"魔术方法"(Magic methods)。 你在命名自己的类方法时不能使用这些方法名, 除非你希望使用"魔术"功能。
构造函数和析构函数
如果你想明确地销毁一个对象,你可以给指向该对象的变量分配任何其它值.通常将变量赋值勤为NULL或者调用unset。
属性重载
public void __set ( string $name , mixed $value )
在给未定义的变量赋值时调用。
public mixed __get ( string $name )
读取未定义的变量的值时调用。
public bool __isset ( string $name )
当对未定义的变量调用 isset()
或 empty()
时调用。
public void __unset ( string $name )
当对未定义的变量调用 unset()
时调用。
参数 $name
是指要操作的变量名称 ,包括没有访问权限的属性(protected,private)。__set()
方法的 $value
参数指定了 $name
变量的值。
属性重载只能在对象中进行。在静态方法中,这些魔术方法将不会被调用。所以这些方法都不能被 声明为static。 从PHP 5.3.0起, 将这些魔术方法定义为static会产生一个警告。
方法重载
public mixed __call ( string $name , array $arguments )
当调用一个不可访问方法(如未定义,或者不可见)时调用 。
public static mixed __callStatic ( string $name , array $arguments )
当在静态方法中调用一个不可访问方法(如未定义,或者不可见)时调用。
$name
参数是要调用的方法名称。
$arguments
参数是一个数组,包含着要传递给方法的参数。
__sleep()
和 __wakeup()
public array __sleep ( void )
函数会检查是否存在一个魔术方法 __sleep()
.
如果存在,__sleep()
方法会先被调用,然后才执行序列化操作。
这个功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。
如果该方法不返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE
错误。
__sleep()
方法常用于提交未提交的数据,或类似的清理操作。同时,如果你有一些很大的对象, 不需要全部保存,这个功能就很好用。
void __wakeup ( void )serialize()
与之相反,unserialize()
会检查是否存在一个 __wakeup()
方法。如果存在,则会先调用 __wakeup
方法,预先准备对象需要的资源。
__wakeup()
经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。
对象的输出
public string __toString ( void )
当对象被当做字符串输出时这个函数会被调用,该方法必须返回一个字符串,否则产生一个 E_RECOVERABLE_ERROR
致命错误。
mixed __invoke ([ $... ] )
当尝试以调用函数的方式调用一个对象时,__invoke()
方法会被自动调用。
static object __set_state ( array $properties )
当调用 var_export()
时,这个静态方法会被调用(自PHP 5.1.0起有效)。
本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...)
格式排列的类属性。
对象复制
在多数情况下,我们并不需要完全复制一个对象来获得其中属性。但有一个情况下确实需要:如果你有一个 GTK窗口对象,该对象持有窗口相关的资源。你可能会想复制一个新的窗口,保持所有属性与原来的窗口相同, 但必须是一个新的对象(因为如果不是新的对象,那么一个窗口中的改变就会影响到另一个窗口)。还有一种情况: 如果对象A中保存着对象B的引用,当你复制对象A时,你想其中使用的对象不再是对象B而是B的一个副本,那么 你必须得到对象A的一个副本。
对象复制可以通过clone关键字来完成(如果可能,这将调用对象的 __clone()
方法)。对象中的 __clone()
方法不能被直接调用。
$copy_of_object = clone $object;
当对象被复制后,PHP5会对对象的所有属性执行一个浅复制(shallow copy)。所有的引用属性 仍然会是一个指向原来的变量的引用。
void __clone ( void )
当复制完成时, 如果定义了 __clone()
方法, 则新创建的对象(复制生成的对象)中的 __clone()
方法会被调用, 可用于修改属性的值(如果有必要的话)。
自动加载对象
很多开发者写面向对象的应用程序时对每个类的定义建立一个 PHP 源文件。一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件列表。在 PHP 5 中,不再需要这样了。可以定义一个 __autoload
函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。
Note:在 __autoload
函数中抛出的异常不能被 catch 语句块捕获并导致致命错误,而且如果使用 PHP 的 CLI 交互模式 时,Autoloading 不存在。
魔术引号(废弃)
魔术引号(Magic Quote)是一个自动将进入 PHP 脚本的数据进行转义的过程。最好在编码时不要转义而在运行时根据需要而转义。 magic_quotes_gpc 影响到 HTTP 请求数据(GET
,POST
和 COOKIE
)。不能在运行时改变。在 PHP 中默认值为 on。
magic_quotes_runtime
如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。
该选项可在运行的时改变,在 PHP 中的默认值为 off。
magic_guotes_sybase
如果打开的话,将会使用单引号对单引号进行转义而非反斜线。
此选项会完全覆盖 magic_quotes_gpc
。如果同时打开两个选项的话,单引号将会被转义成 ''。而双引号、反斜线 和 NULL 字符将不会进行转义。
__autoload
如果要定义一个全局的自动加载类,则必须用 spl_autoload_register()
方法将处理类注册到PHP标准库:
<?php
class Loader {
static function autoload_class($class_name) {
//寻找正确的$class_name类,并引入,没有则抛出异常
}
}
/**
* 设置对象的自动载入
* spl`_autoload_register — Register given function as __autoload()` implementation
*/
spl_autoload_register(array('Loader', 'autoload_class'));
$a = new Test();//Test没用require就实例化,实现自动加载,很多框架就用这种方法自动加载类
?>
注意: 在 __autoload
函数中抛出的异常不能被 catch 语句块捕获并导致致命错误,所以应该在函数本身做捕获。