PHP面向对象一些小点

1.Trait 是什么东西

Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。注:类似在继承对象上面插入新方法,而不影响原有的对象。

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

trait World {
    public function sayWorld() {
        echo 'World';
    }
}

class MyHelloWorld {
    use Hello, World;
    public function sayExclamationMark() {
        echo '!';
    }
}

$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();

//输出 Hello World!

 2. __toString () 作用: 用来避免直接打印对象时出错,调用了__tostring里面的方法。

/*
定义了“__toString()”方法,在直接输出对象引用的时候,就不会产生错误,而是自动调用了”__toString()”方法,
输出“__toString()”方法中返回的字符,所以“__toString()”方法一定要有个返回值(return 语句).
当我们有了__toString()时,运行程序是不会报错,会给出一个友好的提示,或者说当我们输出实例化的对象时
会运行__toString()方法,里面运行什么我们自己定义。
*/

class TestClass
{
    public $foo;
    public function __construct($foo) {
        $this->foo = $foo;
    }
    //定义一个__toString方法,返加一个成员属性$foo
    public function __toString() {
        return $this->foo;
    }
}

$class = new TestClass('Hello');
//直接输出对象,Hello
echo $class;
//如果没有__toString方法,对象是不可以被输出的,只能被打印

 3. php中 public、protected、private、final 区别

  对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。被定义为公有的类成员可以在任何地方被访问

  PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承

posted @ 2022-05-31 10:59  快乐的在一起  阅读(30)  评论(0编辑  收藏  举报