首先要申明,php中的trait的概念就是和go语言中的struct的匿名字段是一个概念。都是希望将一个结构融入到另外一个结构中,增加另外一个结构的功能。而不是通过树形的继承
php trait demo
<?php
class Base {
public function sayHello() {
echo 'Hello';
}
}
trait SayHello {
public function sayHello() {
parent::sayHello();
echo ' World !';
}
public function sayHi() {
echo 'sayHi';
}
}
class MyHelloWorld extends Base {
use SayHello;
}
$helloWorld = new MyHelloWorld();
$helloWorld->sayHello();
$helloWorld->sayHi();
Hello World !sayHi
go语言struct匿名字段
package main
import "fmt"
type Color struct {
red string
yellow string
blue string
}
type Iphone struct {
Color
size float32
memory string
}
func main() {
iphone := Iphone{Color{"red", "yellow", "blue"}, 4.8, "256G"}
fmt.Println(iphone.red, iphone.yellow, iphone.blue, iphone.size, iphone.memory)
}