❶ php里$_SERVER['HTTP_HOST']和$_SERVER['PHP_SELF']区别
两者的区别在于含义不同:
假如命令行的地址是:xxx
那么:$_SERVER['HTTP_HOST']=='www..com'$_SERVER['PHP_SELF']=='/index.php'所以前者是主机地址,后者是脚本文件的绝对路径。
(1)php静态构造函数扩展阅读:
1、新对象模式
*构造函数和析构函数* 对象的引用 * 对象的克隆 * 对象中的私有、公共及受保护模式 * 接口 (Interfaces)
* 抽象类 * __call * __set 和 __get * 静态成员
2、构造函数和析构函数
在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。
在 PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct。
3、对象的引用
在PHP4中,传递变量给一个函数或方法,实际是把这个变量做了一次复制,也就意味着你传给函数或方法的是这个变量的一个副本,除非你使用了引用符号“&;” 来声明是要做一个引用,而不是一个 Copy。在 PHP5中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。
4、对象的克隆
当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?PHP5 提供了一个新的功能,就是对象的克隆,语法为 __clone。
5、抽象类
抽象类不能被实例化。
抽象类与其它类一样,允许定义变量及方法。
抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。
6、__call
PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。
参考资料:网络——PHP
❷ php直接用类名调用静态方法会不会触发类的构造函数
那你把这个方法设置成静态方法,静态方法只属于类,不属于对象,所以不需要new 的,就不会触发构造函数了
❸ PHP中如何调用静态成员函数
用IntPtr类型,Hdc一般是指绘图设备句柄,用Graphics的成员方法GetHdc获得,Graphics可以用静态方法FromHwnd创建某个窗体的绘图器,把某个窗体的Handle传给他就可以了,如果Handle传0,则创建的是整个屏幕的绘图器。
❹ PHP的PHP5
PHP5在长时间的开发及多个预发布版本后,2004年7月13日,PHP5.0发布。该版本以Zend引擎Ⅱ为引擎,并且加入了新功能如PHP Data Objects(PDO)。PHP5.0版本强化更多的功能。首先,完全实现面向对象,提供名为PHP兼容模式的功能。其次是XML功能,PHP5.0版本支持可直观地访问XML数据、名为SimpleXML的XML处理用界面。同时还强化了XMLWeb服务支持,而且标准支持SOAP扩展模块。数据库方面,PHP新版本提供旨在访问MySQL的新界面——MySQL。除此前的界面外,还可以使用面向对象界面和预处理语句(Prepared Statement)等MySQL的新功能.另外,PHP5.0上还捆绑有小容量RDBMS-SQLite. *构造函数和析构函数 * 对象的引用 * 对象的克隆 * 对象中的私有、公共及受保护模式 * 接口 (Interfaces)
* 抽象类 * __call * __set 和 __get * 静态成员
构造函数和析构函数
在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。
在 PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct。
对象的引用
在PHP4中,传递变量给一个函数或方法,实际是把这个变量做了一次复制,也就意味着你传给函数或方法的是这个变量的一个副本,除非你使用了引用符号“&;” 来声明是要做一个引用,而不是一个 Copy。在 PHP5中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。
对象的克隆
当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?PHP5 提供了一个新的功能,就是对象的克隆,语法为 __clone。
抽象类
抽象类不能被实例化。
抽象类与其它类一样,允许定义变量及方法。
抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。
__call
PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。
__set 和 __get
这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。
类型指示
在 PHP5 中,你可以在对象的方法中指明其参数必须为另一个对象的实例。
静态成员
静态成员和静态方法在面象对象编程的术语中被称作 “类方法(class methods)” 和 “类变量(class variables)”。
“类方法” 在一个对象没有实例化前允许被调用。同样,“类变量” 在一个对象没有实例化前可以被独立操作控制(不需要用一个对象的方法来控制)。 异常处理是公认的处理程序错误的理想方法,在 Java及 C 中都有这个概念,我们欣喜的看到,在 PHP5 已经加入了这方面的应用。你可以尝试使用 “try” 和 “catch” 来控制程序的错误。当有错误发生的时候,代码会把错误交给 “catch” 子句来处理,在 “catch” 子句中,你需要指明要把错误交给某个对象处理,这样做可以使代码结构看起来更清晰,因为我们可以把所有的错误信息交给一个对象来处理。
自定义错误处理
你可以很方便的用自定义的处理错误的代码来控制你的程序中的意外。你仅仅需要从异常类中派生出一个自己的错误控制类,在你自己的错误控制类中,你需要有一个构造函数和一个 getMessage 方法。 名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。
例:名称空间 <?phpnamespacemy
ame;//参考定义命名空间小节classMyClass{}functionmyfunction(){}constMYCONST=1;$a=newMyClass;$c=newmy
ameMyClass;//参考全局空间小节$a=strlen('hi');//参考使用命名空间:后备全局函数/常量小节$d=namespaceMYCONST;//参考namespace操作符和__NAMESPACE__常量”小节$d=__NAMESPACE__.'MYCONST';echoconstant($d);//参考命名空间和动态语言特征小节?>注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。 从PHP5.3开始支持ZendGuard加密方式,必须安装Zend Guard Loader,老的zend optimizer将不被支持。
Linux安装Zend Guard Loader支持的过程:
操作系统为CentOS5.5,PHP版本为5.3.8(CentOS5.5中的PHP默认版本较低,如果要升级到PHP最新版,可以使用remi的report源进行升级)。
Windows 下面的 Zend Guard Loader 不支持php5.3.8 VC9 x86 Thread Safe而,php5.3.8 VC9 x86 Non Thread Safe 又不支持 apache。所以安装的话,就需要安装在iis或者和nginx搭配。
1、下载最新的Linux操作系统系下的Zend Guard Loader。
2、上传至Linux服务器并解压缩,注意阅读生成目录下的README文件。全文如下(添加必要的注释)。在/etc/php.d/目录下创建文件zend.ini,内容如下: zend_extension=/usr/lib64/php/moles/ZendGuardLoader.so注意路径一定要写上,刚开始没写路径,老是加载不上ZendGuardLoader .so,也可以直接将上面的配置写入/etc/php.ini文件中,效果一样。
3、重启httpd服务:service httpd restart。
4.输出<?php phpinfo(); ?>
PHP 5.5 正式版发布 不再支持 Windows XP
同时 PHP 开发者也提醒用户,PHP 5.5 也包含一些不向后兼容的内容,包括:不再支持 Windows XP 和 2003 系统;不区分大小写的匹配函数、类;常数名称跟 Locale 无关,这对一些使用非 ASCII 代码的常量名的开发者需要注意的。
❺ php 静态方法怎么使用构造函数
<?php
classDog{
publicfunction__construct($name){
echo'狗名叫',$name,'.';
}
publicstaticfunctionmakedog($name){
returnnewself($name);
}
}
$dog=Dog::makedog('狼');
就这样?
谢谢谢谢谢谢码密。的入输要需所面。界理管台后器。由路陆登是。码密理管。廖仲庭。器由。路。
❻ PHP类的静态(static)方法和静态(static)变量使用介绍
在php中,访问类的方法/变量有两种方法:
1.
创建对象$object
=
new
Class(),然后使用”->”调用:$object->attribute/function,前提是该变量/方法可访问。
2.
直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件:
A.
如果是变量,需要该变量可访问。
B.
如果是方法,除了该方法可访问外,还需要满足:
b1)
如果是静态方法,没有特殊条件;
b2)
如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题。
然后我们再看一下使用$object->…
和使用class::…
都有什么区别:
1.
使用$object->…
,需要执行构造函数创建对象;
2.
使用class::…
调用静态方法/变量,不需要执行构造函数创建对象;
3.
使用class::…
调用非静态方法/变量,也不需要执行构造函数创建对象。
然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢?
差异还是显然存在的,如下:
1.
静态变量
静态成员只保留一个变量值,而这个变量值对所有的实例都是有效,也就是说,所有的实例共享这个成员。
2.
静态方法
静态方法可以直接使用class::…
来调用,而非静态方法需要满足一定限制条件才能使用class::..
的方法调用,如之前所述