PHP中的->,=>,::,$this相关符号的解析

PHP中的->,=>,::,$this相关符号的解析

类是一个复杂数据类型,这个类型的数据主要有属性、方法两种东西。

属性其实是一些变量,可以存放数据,存放的数据可以是整数、字符串,也可以是数组,甚至是类。

方法实际上是一些函数,用来完成某些功能。
引用一个类的属性和方法就使用->符号。

->的用法

->是调用的意思
类 -> 类的成员变量或者成员函数

下面是一个例子小程序:

<?php
//定义类Cart
class Cart {

    var $items;   // 购物车中的物品      
    
// 将 $num 个 $artnr 物品加入购物车  
function add_item($artnr, $num) {  
      $this->items[$artnr] += $num; 
}        

// 将 $num 个 $artnr 物品从购物车中取出
function remove_item($artnr, $num) {

    if ($this->items[$artnr] > $num) { 
           $this->items[$artnr] -= $num; 
           return true;     
     }elseif ($this->items[$artnr] == $num) {  
    		unset($this->items[$artnr]);
     		return true;  
     } else {
       		return false;
     }     
     
}
//示例继承定义类Named_Cart
class Named_Cart extends Cart { 

   var $owner;  

function set_owner ($name) {

       $this->owner = $name;     }
}

//使用类的代码
$ncart = new Named_Cart;     // 新建一个有名字的购物车
$ncart->set_owner("kris");   // 给该购物车命名
print $ncart->owner;         // 输出该购物车主人的名字
$ncart->add_item("10", 1);   // (从购物车类中继承来的功能)
?>

->这个箭头是调用类中的函数
比如

class a
{
	function b()
	{
   		echo 'a';
	}
}

$a=new a;
$a->b();
输出:a

=>的用法

还有一个=>这样的箭头,定义数组用
比如

$array1=array('a'=>5,'b'=>6);
while($arrayitem=each($array1))
{
	extract($arrayitem);
	echo('<br />'.$key.'='.$value);
}
输出:
a=5
b=6

::的用法

而两个冒号的作用则如下:

类的属性及方法,正常呼叫的方法是这样:

$abc = new CT_String();

echo $abc->makeRandNumber(7);

而用用冒号,可以简写呼叫法

//执行类别函式
echo CT_String::makeRandNumer(7);

差别在CT_String::makeRandNumber(7);只呼叫一次没有建立新物件

由此可以看出

::的意思:
不用实例化直接调用类的方法

$this的用法

$this 的含义是表示 实例化后的 具体对象!

我们一般是先声明一个类,然后用这个类去实例化对象!

但是,当我们在声明这个类的时候,想在类本身内部使用本类的属性或者方法。应该怎么表示呢?

例如:

我声明一个User类!它只含有一个属性 $name;

class User
{
   public $_name;
}

现在,我给User类加个方法。就用getName()方法,输出$name属性的值吧!

PHP代码:

class User
{
      public $name;

      function getName()
      {
             echo $this->name;
      }
}

//如何使用呢?

$user1 = new User();

$user1->name = '张三';

$user1->getName();        //这里就会输出张三!

$user2 = new User();

$user2->name = '李四';   

$user2->getName();       //这里会输出李四!

怎么理解呢?

我上面创建了两个User对象。分别是 $user1 和 $user2 。

当我调用 $user1->getName()的时候,上面User类中的代码 echo $this->name ; 就是相当于是 echo $user1->name;

原文链接:https://blog.csdn.net/a1232345/article/details/38707125

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值