PHP中=>和->以及::符号的用法

->的用法

  1. 插入式解引用操作符
  2. 用于类里,访问类里的函数或对象,就是在类里面定义了一个函数,使用->可以调用这个类里面的函数
    <?php
    class test{
        function do_test(){
            echo "doing foo.";
        }
    }
    $bar = new test;
    $bar = do_test();
    ?>
  3. ->用来引用对象的成员(属性和方法),即可以调用类里面定义的函数和变量
    $arr=['a' => 123,'b' => 456];
    echo $arr['a'];
    print_r($arr);
    class A{
        public $a=123;
        public $b=456;
    }
    $obj = new A();
    echo $obj -> a;
    print_r($obj);

=>的用法

  1. 创建关联数组时,经常使用=>来操作数组

    $new_array=array(in => 'reply',side => 'left',padx => 2m);
  2. 如果需要使用数字大于等于的符号,应该使用>=而不是=>

  3. php中数组默认键名为整数,也可以自己定义任意字符键名,最好有实际意义,例如

    $css=array('style' => '0';'color'=>'green');
    $css['style']='0',$css['color']='green';
  4. 综上,=>的作用就是用来给数组中的值赋值

$arr=array('one' => 1);
array['one'] = 1;

::的用法

  1. 双冒号操作符,即作用域限定操作符,可以访问静态,const,类中重写的属性和方法

用变量在类定义外部访问

class fruit{
	const CONST_VALUE = 'fruit color';
}
$classname = 'fruit';
echo $classname::CONST_VALUE;
echo fruit::CONST_VALUE;

在类定义外部使用

<?php
class fruit{
	const const_value = 'fruit color';
}
class apple extends fruit
{
	public static $color = 'red';
	public static function doubleColon(){
		echo parent::CONST_VALUE . '\n';
		echo self::$color . '\n';
	}
}
apple::doubleColon();
?>

调用parent方法

<?php
class fruit
{
	protected function showcolor(){
		echo "fruit::showcolor()\n";
	}
	class apple extends fruit
	{
		public function showcolor()
		{
			parent::showcolor();
			echo "apple::showcolor()\n";
		}
	}
}
$apple = new apple();
$apple = showcolor();
?>

面向对象self和parent的区别

<?php

class Par{//父类

    public static $name = '小红漂亮';
    const TITLE = '阿里巴巴';
}

class Chi extends Par //子类
{
    public static $name = '小黄最帅';//子类静态属性
    const TITLE = '刘强东|京东';//子类常量
    public function demo()
    {
        $str = '自己的静态属性:'.self::$name;
        $str .= '<br>父类的静态属性:'.parent::$name;
        $str .= '<br>自己的常量强东:'.self::TITLE;
        $str .= '<br>父类的常量阿里:'.parent::TITLE;
        echo $str;
    }
}

$obj =  new Chi();
$obj->demo();
  1. 相同点:self和parent都是调用父类的属性或者方法
  2. 不同点:如果两个属性一样,假如都叫$name ,那么self::调用的是自己类中的,parent::则是调用父类的

php中extends

  1. 在php中,extends关键字用于定义类的继承,语法为

    class 子类 extends 父类{}
  2. 通过该关键字可以实现单继承,一个类只能从另一个类中继承数据,但一个类可以有多个子类

  3. 即一个子类只能有一个父类,但是一个父类可以有多个子类,一对多的关系

  4. 在c++中,一个子类可以继承一个基类,也可以继承多个基类,继承一个基类称为单继承,继承多个基类,称为多继承

  5. 但是在php中没有多继承,只能使用单继承,也就是说,一个类只能直接从另一个类中继承数据,但是一个类可以有多个子类