【问题标题】:Laravel Static and Non-static MethodsLaravel 静态和非静态方法
【发布时间】:2020-12-27 20:22:34
【问题描述】:

在 Laravel 框架中,可以将模型的方法用作静态和非静态,例如,您可以像这样从数据库中获取用户:

User::where('id', 1)->first();

还有这样的:

$user = new User();
$user->where('id', 1)->first();

如何在 PHP 中做到这一点? 因为据我所知,方法只能是静态或非静态的,但不能两者兼而有之。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    这是通过魔术方法__callStatic 完成的,该方法创建模型的一个新实例,然后在其上调用该方法。这个特定的方法 where 在模型上不存在,而是由魔术方法 __call 处理,该方法在 Eloquent Builder 实例上调用此方法。

    PHP.net Manual - OOP - Overloading__callStatic__call

    Laravel - Github - Eloquent Model__callStatic

    Laravel - Github - Eloquent Model__call

    【讨论】:

    • 方法不是类中的一种属性吗?
    • 方法是方法,属性是属性(我假设属性是你所说的“属性”)......而且术语“属性”在 Eloquent 模型方面具有特殊含义
    猜你喜欢
    • 2023-02-22
    • 2016-08-07
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多