当前位置:首页 » 编程语言 » php静态绑定

php静态绑定

发布时间: 2022-04-11 11:11:40

php中静态成员的用处

存静态公共数据的,这对数据的绑定很有帮助,特别是涉及模式中的使用

㈡ 如何选择不同的PHP版本

由于各种因素,导致了PHP版本的碎片化。PHP的向下不兼容导致了PHP程序的移植性很差。因此才会有不同版本的PHP要求选择的需求。
护卫神主机系统,为您解决了这个烦恼,同一台服务器上,配备了PHP5.2/PHP5.3/PHP5.4/PHP5.5/PHP5.6 一共5个版本,每个网站均可以自己独立选择所需的PHP版本,与其他网站相互不干扰,完全满足您多版本PHP的需求,且支持主机系统一键切换。
在阿里云镜像中,PHP5.2/5.3/5.4为32位程序,支持Zend解米,PHP5.5/5.6为64位程序,不支持Zend解米,请各位根据实际情况选择。
一般而言,DEDECMS原版支持PHP5.2版,其他CMS程序请根据实际运行环境对应切换即可。
以下简单介绍不同的PHP之间的区别:
PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束
PHP5.2:JSON 支持
PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar
PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改
PHP5.5:yield, list() 用于 foreach, 细节修改
PHP5.6: 常量增强,可变函数参数,命名空间增强。希望对你有用,我在后盾人线下面授培训学习刚下课,有不会的可以问我(❁ฺ•㉨ฺ•❁)

㈢ php Late static binding 是什么

PHP延迟静态绑定 Late Static Binding
推荐阅读以下内容:
As of PHP 5.3.0, PHP implements a feature called late static bindings which can be used to reference the called class in a context of static inheritance.
More precisely, late static bindings work by storing the class named in the last "non-forwarding call". In case of static method calls, this is the class explicitly named (usually the one on the left of the :: operator); in case of non static method calls, it is the class of the object. A "forwarding call" is a static one that is introced by self::, parent::, static::, or, if going up in the class hierarchy, forward_static_call(). The function get_called_class() can be used to retrieve a string with the name of the called class and static:: introces its scope.
This feature was named "late static bindings" with an internal perspective in mind. "Late binding" comes from the fact thatstatic:: will not be resolved using the class where the method is defined but it will rather be computed using runtime information. It was also called a "static binding" as it can be used for (but is not limited to) static method calls.

㈣ PHP常用的几个版本都有哪些改变

PHP5.2以前:autoload, PDO 和 MySQLi, 类型约束
PHP5.2:JSON 支持
PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar
PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改
PHP5.5:yield, list() 用于 foreach, 细节修改
PHP5.6: 常量增强,可变函数参数,命名空间增强
PHP 7.0.2 Alpha使用新版的ZendEngine引擎,带来了许多新的特性

详细可以参考网页链接

㈤ php 静态方法 是什么意思

<?php
header('content-type:text/html;charset=utf-8');
/*
普通方法,存放类内,只有一份
静态方法,也是存放于类内,只有一份
区别在于:普通方法需要对象去调用,需要绑定$this
即,普通方法,必须要有对象,然后让对象来调用
而静态方法,不属于哪一个对象,因此不需要绑定$this
即,不需要对象也可以调用
*/
class Human{
static public $head=1;
public function easyeat(){
echo '普通方法吃饭<br />';
}
static public function eat(){
echo '静态方法吃饭<br />';
}
public function intro(){
echo $this->name;
}
}
Error_reporting(E_ALL|E_STRICT);
//此时没有对象!方法可以执行
Human::eat();
/*
以下方法easyeat是一个非静态方法,就由对象来调用,但,用类来调用此方法来也可以执行,而严格状态下,此方法会执行,同时报错,
Strict Standards: Non-static method Human::easyeat() should not be called statically in D:\application\PHPnow-1.5.6\htdocs\yan18\types\staticfun.php on line 32
*/
Human::easyeat();
/*
接上,从逻辑来理解,如果用类名静态调用非静态(普通)方法
比如:intro()
那么,这个$this是指哪个对象呢??
因此会报错,因为找不到对象!
Fatal error: Using $this when not in object context in D:\application\PHPnow-1.5.6\htdocs\yan18\types\staticfun.php on line 23
*/
Human::intro();
/*
如上分析,其实,非静态方法,是不能由类名静态调用的,但目前,php中的面向对象检测不够严格,只要静态方法中没有$this关键字,就会转化成静态方法来处理!
*/
$li=new Human();
$li->eat();
/*
总结:
类》访问->静态方法(类的方法)->可以
类》访问->普通方法(对象的方法)->不可以(虽然方法里不用$this关键字时,可以!但不支持这种写法)
对象》访问》静态方法(类的方法)->可以
对象》访问》普通方法(对象的方法)->可以
*/
?>

㈥ php是什么

PHP(PHP:Hypertext Prerocessor)是一种在电脑上执行的脚本语言,主要是用途在于处理动态网页,也包含了命令行执行接口(command line interface),或者产生图形使用者接口(GUI)程序。[1]

PHP 最早由 Rasmus Lerdorf 在1995年发明,现在PHP实质上的标准由PHP Group和开放源代码社群维护。PHP 以 PHP License 作为许可协议,不过因为这个协议限制了PHP名称的使用,所以和开放源代码许可协议GPL不相容。[2]

PHP 目前被广泛的应用,特别是在服务器端的网页程序开发。一般来说 PHP 大多执行在网页服务器上,透过执行PHP程序码来产生使用者浏览的网页。PHP 几乎可以在任何的操作系统上执行,而且使用 PHP 完全是免费的。根据2007年4月的统计资料,PHP 已经被安装在超过2000万个网站和100万台服务器上[3]。

目录 [隐藏]
1 开发历史
1.1 版本历程
2 应用
3 语法
3.1 类型
3.2 变量
3.3 面向对象
4 PHP相关资源
4.1 函数库
4.2 源代码编码和加速
4.3 样板引擎
5 未来发展
5.1 PHP 5.3
6 参考资料
7 外部链接

[编辑] 开发历史

PHP 的发明人 Rasmus Lerdorf
Zend Technologies的创办人之一 - Andi GutmansFile:Zeev Suraski.jpg
Zend Technologies的创办人之一 - Zeev SuraskiPHP 原本的简称为 Personal Home Page[4],是Rasmus Lerdorf 为了要维护个人网页,而用c语言开发的一些CGI工具程序集,来取代原先使用的 Perl 程序。最初这些工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量[5]。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。Rasmus Lerdorf 在1995年6月8日将 PHP/FI 公开释出,希望可以透过社群来加速程序开发与寻找错误[6]。这个释出的版本命名为 PHP 2,已经有今日 PHP 的一些雏型,像是类似 Perl 的变量命名方式、表单处理功能、以及嵌入到 HTML 中执行的能力。程序语法上也类似 Perl,有较多的限制,不过更简单、更有弹性。[5]

在1997年,任职于 Technion IIT 公司的两个以色列程序设计师:Zeev Suraski 和 Andi Gutmans,重写了 PHP 的剖析器,成为 PHP 3 的基础,而 PHP 也在这个时候改称为PHP: Hypertext Preprocessor.[5]。经过几个月测试,开发团队在1997年11月释出了 PHP/FI 2,随后就开始 PHP 3 的开放测试,最后在1998年6月正式释出 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 释出后开始改写 PHP 的核心,这个在1999年释出的剖析器称为 Zend Engine[7],他们也在以色列的 Ramat Gan 成立了 Zend Technologies 来管理 PHP 的开发。[5]

在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式释出,2004年7月13日则释出了PHP 5,PHP 5则使用了第二代的Zend Engine[5]。PHP包含了许多新特色,像是强化的面向对象功能、引入PDO(PHP Data Objects,一个存取数据库的延伸函数库)、以及许多效能上的增强[8]。目前PHP 4已经不会继续更新,以鼓励用户转移到PHP 5。[9][10]

2008年PHP 5成为了PHP唯一的有在开发的PHP版本。将来的PHP 5.3将会加入Late static binding和一些其他的功能强化[11][12] 。PHP 6 的开发也正在进行中,主要的改进有移除register_globals[13]、magic quotes 和 Safe mode的功能。[9][14]

[编辑] 版本历程
代表意义
红色 旧版;官方停止支持
黄色 旧版;官方维护中
绿色 目前版本
蓝色 未来版本
主要版本 次要版本 释出日期 说明
1.0 1.0.0 1995年6月8日 正式名称为"Personal Home Page Tools (PHP Tools)",第一次使用了"PHP"的名字。[5]
2.0 2.0.0 1994年4月16日 针对PHP 1.0的改进版,速度更快、体积更小,更容易产生动态网页。[5]
3.0 3.0.0 1998年6月6日 开发方式改成多人共同参与。Zeev Suraski 和 Andi Gutmans 为了这个版本重写了剖析引擎。[5]
4.0 4.0.0 2000年5月22日 改成以Zend引擎作为剖析器,具有两阶段剖析/标签剖析系统等先进功能。[15]
4.1.0 2001年12月10日 加入"超全域变量"(superglobals)功能,包含了$_GET、$_POST、 $_SESSION等[15]
4.2.0 2002年4月22日 默认取消register_globals功能。从网络接收的资料将不会设定成全域变量,增加程序安全性[15]。
4.3.0 2002年12月27日 加入命令行执行档,称为CLI。[15]
4.4.0 2005年7月11日 Added man pages for phpize and php-config scripts.[15]
4.4.8 2008年1月3日 Several security enhancements and bug fixes. Was to be the end of life release for PHP 4. Security updates only until 2008-08-08, if necessary.[16]
4.4.9 2008年8月7日 More security enhancements and bug fixes. The last release of the PHP 4.4 series.[17][18]
5.0 5.0.0 2004年7月13日 Zend Engine II with a new object model.[19]
5.1.0 2005年11月24日 Performance improvements with introction of compiler variables in re-engineered PHP Engine.[19]
5.2.0 2006年11月2日 Enabled the filter extension by default.[19]
5.2.8 2008年12月8日[20] emergent bug fix[20]
5.2.9 2009年2月26日[21] 这个版本解决了5.2.*的超过了50多个错误和多个安全问题,增加了稳定性。[21]
5.2.9-2(Windows) 2009年3月10日[22] 这个版本解决了在Windows系统下OpenSSL的安全缺陷,与其绑定的OpenSSL版本升级到0.9.8k。[22]
5.3.0 预计2009年第二季[23] 支持命名空间; 使用XMLReader和XMLWriter增强XML支持; 支持SOAP ,[24] 延迟静态绑定, 跳转标签(有限的 goto), 闭包,Native PHP archives
6.0 6.0.0 ??? 支持Unicode; 移除ereg扩展, 'register_globals', 'magic_quotes' 和 'safe_mode'; Alternative PHP Cache;Removal of mime_magic and rewrite of fileinfo() for better MIME support[25]

[编辑] 应用
PHP 是一个应用范围很广的语言,特别是在网络程序开发方面。一般来说 PHP 大多在服务器端执行,透过执行 PHP 的程序码来产生网页提供浏览器读取,此外也可以用来开发命令行脚本程序和使用者端的GUI应用程序。PHP可以在许多的不同种的服务器、操作系统、平台上执行,也可以和许多数据库系统结合。使用 PHP 不需要任何费用,官方组织 PHP Group 提供了完整的程序源代码,允许使用者修改、编译、扩充来使用。[26]

[编辑] 语法
PHP的语法参考了Perl、C语言,而且可以整合在HTML之中,以下是一个简单的Hello World程序:

<?php
echo 'Hello World!';
?>
PHP剖析引擎只剖析<?php到?>之间的程序码,而不包含在<?php到?>之间的内容则会直接送出,所以可以用以下的方式来将PHP程序码嵌入在HTML之中:

<?php
//-PHP程式码
?>
html内容
<?php
//-PHP程式码
?>
但是在判断语句中的HTML代码并不会被直接送出:

<?php
if (false) {
?>
HTML Code
<?php
}
?>
PHP可以用三种注解的形式:C与C++所使用的“/*...*/”与“//”,和Perl的“#”。

[编辑] 类型
PHP主要有以下四种变量类型:

整数 (integer)
浮点数 (float)
布尔数 (boolean)
字串 (string)
两种复合类型:

阵列 (array)
物件 (object)
两种特殊类型

NULL
资源 (resource)[27]

[编辑] 变量
PHP中,变量以“$”后接变量名称来表示。变量名称区分大小写。有效的变量名称以字母或底线开头,后接任意数目的字母、数字或底线。[28]

[编辑] 面向对象
PHP从PHP 3开始有了基本的面向对象的特性,但直到PHP 5将面向对象部份重新改写之后,PHP的面向对象功能才比较完善。现在PHP可以说是一个有完整面向对象功能的语言。

[编辑] PHP相关资源

[编辑] 函数库
主条目:PHP函数库列表
内建多样化的函数是PHP主要的特点之一,这些开放程序码的函数提供了各种不同的功能,例如档案处理、FTP、字串处理、等等。这些函数的使用方法和C语言相近(例如printf),这也是PHP广为流行的原因之一。

除了内建的函数之外,PHP也提供了很多延伸函数库(extension),像是各种数据库连接函数、资料压缩函数、图形处理等等。有些延伸函数库需要从PECL(PHP Extension Community Library)取得。

[编辑] 源代码编码和加速
PHP源代码是可以直接读取的,即使放到服务器上执行也是一样。虽然让PHP多了弹性,但相对的会造成安全危机和性能下降的问题。

透过PHP编码器,可以保护PHP的源代码不被读取(对商业软件来说特别有需求),也可以提升执行的效能。有许多公司或团体开发PHP的编码器,将PHP程序编译成字节码(byte code),再透过服务器上安装对应的程序来执行PHP脚本。

除了透过编码器加速之外,PHP还可以透过动态的快取机制来提升速度,加速工具有商业版的,例如Zend Platform,也有开放源代码的加速软件如eAccelerator、APC、XCache。

[编辑] 样板引擎
样板引擎让PHP应用程序可以做逻辑和使用接口上的分离,让程序开发更容易进行,目前比较受欢迎的样板引擎是PHP官方开发的Smarty。不过样板引擎有效能上的争议,因为PHP本身就是一个样板引擎,使用样板引擎反而变成“重新发明了轮子”(reinventing the wheel)。样板引擎最主要的好处就是让不懂PHP程序码的人也可以参与使用接口的开发,因为样板引擎的语言远比PHP简单。

[编辑] 未来发展

[编辑] PHP 5.3
命名空间(namespaces)原本预计在PHP 6提供支持,现在可能改至PHP 5.3就支持[29

㈦ 如何理解php中的后期静态绑定

使用的保留关键字:
static
定义:
static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。
self与static的区别:
self调用的就是本身代码片段这个类,而static调用的是从堆内存中提取出来,访问的是当前实例化的那个类(即static作用于当前调用的类)
示例一(在静态环境下)
<?phpclass A { public static function who() { echo __CLASS__;
} public static function test() { static::who(); // 后期静态绑定从这里开始
}
}class B extends A { public static function who() { echo __CLASS__;
}
}

B::test();?>输出结果是"B"

㈧ PHP代码,能详细解释一下每行的意思么多谢了

php中类操作有几个关键字,$this, self, static, parent

$this很好区别,就是实例化后的对象,所以不能在静态方法里调用

classtestA{
public$name="name";
publicstaticfunctiontest(){
//出错!static方法不能使用this
echo$this->name;
}
}

self, static, parent 都是静态调用,后跟 :: 如果是变量,要加$

classtestA{
//属性也要定义成静态的,不然也是访问不了的
publicstatic$name="name";

public$mobile="";

publicstaticfunctiontest(){
//可以访问
echostatic::$name;

//不可访问
echostatic::$mobile
}
}

下面说一下三者区别

self 指代当前定义方法所在的类

static 后期静态绑定的类 ( 实际调用中是哪个类,就代表哪个类,不一定是方法定义所在的类 )

parent 这个也好区别,就是当前定义类的父类

classA{
publicstaticfunctionwho(){
echo__CLASS__;
}
publicstaticfunctiontest(){
static::who();//后期静态绑定从这里开始
}
}

classBextendsA{
publicstaticfunctionwho(){
echo__CLASS__;
}
}

B::test();

以上代码,输出 B

因为最后调用是从B 这个类调用的

classA{
publicstaticfunctionwho(){
echo__CLASS__;
}
publicstaticfunctiontest(){
self::who();
}
}

classBextendsA{
publicstaticfunctionwho(){
echo__CLASS__;
}
}

B::test();

以上代码,输出 A

因为调用who时指定了当前类,不管最终从哪里调用,都会调用到A里定义的方法

另外 ,这三个关键字可跟在new 后面,来实例化代表的类,就不用重复写类名,方便维护。

参考:php:后期静态绑定

学php可以多看看官方手册

下面我再简单解释下你发的代码。

你这个应该是thinkphp的model吧,init静态方法是model的初始化方法,是一个静态方法,主要用于勾子处理(事件绑定)。这个调用可以从thinkphp的model类中找到。

一般在定义方法时需要覆盖父类方法,都会调用一下 parent::method() 用于先执行父类的方法,除非特意屏蔽父类初始方法就不调用。

㈨ php的几个版本的区别

PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束
PHP5.2:JSON 支持
PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar
PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改
PHP5.5:yield, list() 用于 foreach, 细节修改
PHP5.6: 常量增强,可变函数参数,命名空间增强

㈩ php5.2的代码到php7.0上运行不了

PHP5.2以前:autoload,PDO和MySQLi,类型约束。
PHP5.2:JSON支持PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定。
Heredoc和Nowdoc,const,三元运算符,PharPHP5.4:ShortOpenTag,数组简写形式,Traits,内置Web服务器。
SESSION读取文件上传进度,细节修改。
PHP5.5:yield,list用于foreach,empty()函数的参数支持任意数据,包括一个函数调用,直接对一个array和string取值。若干细节修改。
PHP5.6:常量增强,可变函数参数,命名空间增强。

热点内容
登陆认证失败请检查服务器地址 发布:2025-05-20 07:06:55 浏览:831
无限分类实现php 发布:2025-05-20 06:57:40 浏览:681
数据结构c语言版严蔚敏李冬梅 发布:2025-05-20 06:55:05 浏览:449
iphone快捷访问 发布:2025-05-20 06:55:05 浏览:929
如何加密硬盘分区 发布:2025-05-20 06:52:29 浏览:363
反编译gd 发布:2025-05-20 06:52:23 浏览:838
java源码知乎 发布:2025-05-20 06:47:59 浏览:483
dos解压缩命令 发布:2025-05-20 06:47:57 浏览:639
安卓传数据给苹果的软件叫什么 发布:2025-05-20 06:42:48 浏览:804
怎么样盘解压力 发布:2025-05-20 06:37:08 浏览:85