php中self与$this的区别

发布时间:2020-07-19编辑:脚本学堂
本文介绍下,php中有关self与$this在用法上的不同,有需要的朋友参考下。

学习php中self与$this的区别。

先来看下parent与self的例子:

<?php
/*
 * parent与self的区别
 * by www.jb200.com
 */
 class A{
  function __construct(){
   echo "基类A的构造方法<br />";
  }
 }
 class B extends A{
  function __construct(){
   parent::__construct();
   echo "子类B的构造方法<br />";
   self::myFun();
  }
  function myfun(){
   echo "一个普通方法myFun()<br />";
  }
 }

$obj=new A();
$obj=new B();
?>

说明:
self与$this的功能极其相似,但二者又不相同。
注意:
$this不能引用静态成员和常量。
self更像类本身,而$this更像是实例本身。

变量$PHP_SELF是php的内置变量,是PHP中一个很方便的指针,其变量值就是当前页面的URL地址。

【语法】$php_self?变量1=值&变量2=值&变量3=值
使用$PHP_SELF变量而不使用页面的实际地址,是因为通过使用$PHP_SELF变量,可以方便对编写的页面代码进行修改和移动,而不必担心在每次改动之后重新输入新的页面地址。

另外,在使用$PHP_SELF变量时,可以采用如下方式:
global $PHP_SELF;
$PHP_SELF变量为全局变量。

注意:
PHP中任何的函数变量都是局部变量。
这就意味着任何函数变量的作用 域都只局限于包括该变量的函数本身。
即使函数外存在同名变量,变量的值也不相同。
因此,如果没有在代码中以显式方式声明函数变量$PHP_SELF为全局变量具有全局唯一值的话,用户就会发现函数中的变量$PHP_SELF的值将会为空,而非预先所期望的当前页面的URL地址。