PHP 更改方法可见性

示例

trait HelloWorld {
    public function sayHello() {
        echo 'Hello World!';
    }
}

// 更改sayHello的可见性
class MyClass1 {
    use HelloWorld { sayHello as protected; }
}

// 可见性已更改的别名方法
// 说您好可见度未更改
class MyClass2 {
    use HelloWorld { sayHello as private myPrivateHello; }
}

运行此示例:

(new MyClass1())->sayHello();
// 致命错误:未捕获的错误:调用受保护的方法MyClass1 :: sayHello()

(new MyClass2())->myPrivateHello();
// 致命错误:未捕获的错误:调用私有方法MyClass2 :: myPrivateHello()

(new MyClass2())->sayHello();
// 你好,世界!

因此请注意,在MyClass2原始的非锯齿方法中的最后一个示例中,trait HelloWorld保持原样访问。