• 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 的含义是表示    实例化后的 具体对象!

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

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

    例如:

    我声明一个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;
    ————————————————
    版权声明:本文为CSDN博主「a1232345」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/a1232345/java/article/details/38707125

  • 相关阅读:
    慕课网-安卓工程师初养成-3-2 Java中的算术运算符
    慕课网-安卓工程师初养成-3-1 什么是运算符
    慕课网-安卓工程师初养成-2-13 练习题
    慕课网-安卓工程师初养成-2-12 如何在Java中使用注释
    慕课网-安卓工程师初养成-2-11 Java常量
    慕课网-安卓工程师初养成-2-10 Java中的强制类型转换
    试把一个正整数n拆分为若干个
    求解两个给定正整数m、n的最大公约数(m、n)
    统计n!尾部零
    横竖折对称方阵
  • 原文地址:https://www.cnblogs.com/fightforcoder/p/13273639.html
Copyright © 2020-2023  润新知