jasonma855() - 2020-01-14 1 人
本作品暂无说明
jsnoob(Rh九尾鱼) - 2020-01-04 1 人
svg六边形Loading
tkc666(Night watch) - 2019-12-18 1 人
自学招生网盒模型
<?php

// 代码复用:建议把代码拿到本地去运行,这里面运行很慢得不到结果(不知道为什么)

trait Demo1
{
    public function hello1()
    {
        return __METHOD__;
    }

    public function test()
    {
        return __METHOD__;
    }

    public function test2()
    {
        return __METHOD__;
    }
}

trait Demo2
{
    public function hello2()
    {
        return __METHOD__;
    }

    public function test2()
    {
        return __METHOD__;
    }
}

class B
{
    public function test()
    {
        return __METHOD__;
    }
}

class A extends B
{
    use Demo1, Demo2 {
        Demo1::test2 insteadof Demo2;
        Demo2::test2 as demo2Test2;
    }

    /* public function test()
    {
        return __METHOD__;
    } */

    public function hello()
    {
        return __METHOD__;
    }

    public function demo1()
    {
        return $this->hello1();
    }

    public function demo2()
    {
        return $this->hello2();
    }
}

$a = new A;
var_dump($a->hello());
var_dump($a->demo1());
var_dump($a->demo2());

// 代码优先级:
// 1、子类中有test()方法,父类有test()方法,trait中也有test()方法 =======> 子类中的方法
// 2、子类没有test()方法,只有父类和trait中有                    =======> trait类中的方法
// 总结:子类 > trait > 父类
// var_dump($a->test());

// trait中有同名的方法怎么办:use Demo1, Demo2 {Demo1::test2 insteadof Demo2;}
// 那怎么访问Demo2中的test2()方法:use Demo1, Demo2 {Demo1::test2 insteadof Demo2; Demo2::test2 as demo2Test2}
// var_dump($a->test2());
// var_dump($a->demo2Test2());
xfjpeter(PHP工程师) - 2019-12-12 1 人
代码的复用:trait
<?php 

class A
{
    public static $str = 'this is test string.';

    public static function getMethod()
    {
        return __METHOD__;
    }
}

$classA = new A;

// 一定要先自己估计一下再运行才有效果哟
echo '1 ====> ' . $classA->a . PHP_EOL;            // 猜一下能输出结果么???
echo '2 ====> ' . $classA->getMethod() . PHP_EOL;  // 猜一下又能输出结果么???
echo '3 ====> ' . $classA::$str . PHP_EOL;         // 猜一下又能输出结果么???
echo '4 ====> ' . $classA::getMethod() . PHP_EOL;  // 猜一下又能输出结果么???

// 第()返回的是空,并不是真正返回的空,是一个(),只是这个PHP抑制了这个错误。
xfjpeter(PHP工程师) - 2019-12-12 1 人
PHP中静态属性和方法的调用正确的是
<?php

class A
{
    public static $num = 0;

    public function __construct()
    {
        self::$num++;
    }
}

new A();
new A();
new A();
new A();
echo A::$num; // 先猜猜看输出的是什么再运行哟~~
xfjpeter(PHP工程师) - 2019-12-12 1 人
PHP静态变量的使用
没有了
1/322 下一页