关于 OrderPaid 中的这段代码,求解其中有什么不同之处呢?

教程是这样的:

class OrderPaid
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    protected $order;

    public function __construct(Order $order)
    {
        $this->order = $order;
    }

    public function getOrder()
    {
        return $this->order;
    }
}

记得之前有文章是像下面这么写的

class OrderPaid
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $order;  // protected 改成  public

    public function __construct(Order $order)
    {
        $this->order = $order;
    }
    // getOrder() 这个方法不要了
}

listener 中 可以通过 $event->order 能够获取到 order
请问这两种写法有什么区别呢?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
leo
最佳答案

两种都行。只是我个人偏向前者,后者『有可能』被人通过 $event->order = $xxx 来赋值一个非 Order 类型的变量进去,从而导致系统出错。

6年前 评论
讨论数量: 3
leo

两种都行。只是我个人偏向前者,后者『有可能』被人通过 $event->order = $xxx 来赋值一个非 Order 类型的变量进去,从而导致系统出错。

6年前 评论

public 【公共的】

可以在程序中的任何位置(类内、类外)被其他的类和对象调用。子类可以继承和使用父类中所有的公共成员。

Private 【私有的】

被 private 修饰的变量和方法,只能在所在的类的内部被调用和修改,不可以在类的外部被访问。在子类中也不可以。

如果直接调用,就会发生错误。

Protect 【受保护的】

用 protected 修饰的类成员,可以在本类和子类中被调用,但是在其他地方不能被调用。

6年前 评论

@等车的猪 谢谢 这三个修饰词体现面向对象的封装特性 这样说还算正确么?

6年前 评论