首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

非静态方法App\Http\Models\Role::id_role()不应在laravel中静态调用

在Laravel中,非静态方法App\Http\Models\Role::id_role()不应该被静态调用。这是因为在Laravel框架中,非静态方法需要通过实例化类的对象来调用,而不是直接通过类名调用。

静态方法是指可以直接通过类名调用的方法,而不需要创建类的实例。在Laravel中,通常使用静态方法来执行一些通用的操作,例如获取配置信息或执行全局函数。

对于非静态方法App\Http\Models\Role::id_role(),应该首先创建Role类的实例,然后通过该实例来调用该方法。示例代码如下:

代码语言:txt
复制
$role = new App\Http\Models\Role();
$idRole = $role->id_role();

在上述示例中,我们首先创建了Role类的实例$role,然后通过该实例调用了非静态方法id_role()

需要注意的是,如果id_role()方法是一个公共方法,可以在其他地方频繁使用,可以考虑将其定义为静态方法,以便更方便地调用。在这种情况下,可以将方法定义修改为静态方法,并使用self关键字来引用当前类。示例代码如下:

代码语言:txt
复制
class Role
{
    public static function id_role()
    {
        // 静态方法的实现逻辑
    }
}

通过将id_role()方法定义为静态方法,可以直接通过类名调用该方法,而无需创建类的实例。示例代码如下:

代码语言:txt
复制
$idRole = Role::id_role();

总结起来,非静态方法App\Http\Models\Role::id_role()不应在Laravel中静态调用,应该通过实例化类的对象来调用。如果该方法是一个通用方法且频繁使用,可以考虑将其定义为静态方法,以便更方便地调用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

laravel框架模型中非静态方法也能静态调用的原理分析

本文实例讲述了laravel框架模型中非静态方法也能静态调用的原理.分享给大家供大家参考,具体如下: 刚开始用laravel模型时,为了方便一直写静态方法,进行数据库操作。 <?...function getList() { return $this- get()- toArray(); } } 试了一下,发现还真可以,按理说受保护的 protected 静态方法...php namespace App\Models; class Model { //在对象调用一个不可访问方法时,__call()被调用 public function __call($method...php namespace App\Http\Controllers\Test; use Illuminate\Http\Request; use App\Http\Controllers\Controller...//对象调用 (new Model())- test(); //静态方法调用 Model::test(); } } 结果显示调用成功。

1.2K41
  • orm 系列 之 Eloquent演化历程1

    Eloquent Eloquent是laravel的orm,采取的是active record的设计模式,里面的对象不仅包括领域逻辑,还包括了数据库操作,但是大家平时使用的时候可能没有探究eloquent...,刚提交上来的时候,Model类中大概如下: 可以看到属性通过定义table,connection,将具体的数据库操作是委托给了connection类,然后Model自己是负责领域逻辑,同时会定义一些静态方法...Model的hasOne方法后,返回是一个HasOne,即Relation,当我们调用Relation的方法时,是怎么处理的呢?...[$relation] = $value; } 最后调用match方法,就是正确的给每个model设置好relation关系。...,我们在使用上可能会是下面这样子的 return $this->belongsToMany('App\Role', 'user_roles', 'user_id', 'role_id'); 在构造函数

    1.1K30

    Laravel系列4.3】模型Eloquent ORM的使用(一)

    删除功能直接调用的是静态的 destroy() 方法,它可以接收的参数是主键 id ,而且这个地方我们可以传递多个 id 以及其它不同的写法就能够实现批量删除,大家也可以自行查阅官方文档。...最后在查询,我们也看到了类似于 查询构造器 的链式调用形式,通过模型的静态 where() 方法返回的实例对象,一步步地构造整个查询。...等等,不对呀,我们在模型里面定义的是一个 gender() 方法,怎么在外面使用的是一个属性?别急,我们再来看看源码,看看框架是如何把调用属性变成调用一个方法的。...这里我也不多做讲解了,反正如果是在对象调用的时候,调用的是没有明确在类模板写下的属性,就会来到这个 __get() 魔术方法。...在这段代码,就是先调用 BelongsTo 对象的 getResults() 方法,获得关联的真正的 DbSex 这个 Model 对象,然后通过回调函数的 setRelation() 绑定到 laravel

    8.9K20

    laravel5分钟完成登录注册

    以下均是在laravel5.2+版本进行操作,5.1部分适用,建议使用5.2新增许多方便的功能,5.1的多表验证极其麻烦,推荐使用 在使用laravel框架前,我们需要安装composer 在安装好...composer以后,让我们建一个新的项目 不懂安装composer的可以看    http://www.phpcomposer.com/ composer create-project laravel.../laravel laravel 最后的参数是我们需要建立的项目名 laravel 框架默认带着一个model----User,直接放在app下(事实上我们往往会把model放在一个文件夹下,例如我们可以自己去新增...model在命令行下,php artisan Models/User,这样我们新增的model就放在了app/Models目录下了) 自带的还有两个数据库迁移文件,create_users_table,...写入数据库,写入cookie登陆,最后跳转到AuthController里定义的 protected $redirectTo =‘/’  也就是首页了 之后我们可以尝试退出登录,再登陆,也是调用

    17320

    Laravel框架关键技术解析

    、类和常量,根据当前导入的命名空间进行转换 在命名空间内部,所有的没有根据导入规则转换的限定名称和完全限定名称均会在其前面加上当前命名空间名称 在命名空间内部,对限定名称和限定 名称的函数进行调用时...2.Laravel服务容器解析服务的过程:Illuminate\Container\Container.php E.后期静态绑定 1.后期静态绑定(PHP5.3.0),即在类的继承过程,使用的类不再是当前类...2.使用static来实现,通过这种机制,“static::”不再被解析为定义当前方法所在的类,而是在实际运行时计算得到的,即为运行时最初调用的类,不仅限制于静态方法调用 3.后期静态绑定还可以用于对象实例化...,同时,可以通过as操作符改变名称来引入 使用as语法可以用来调整方法的访问控制 trait抽象方法使类必须实现这个方法 trait可以用静态方法静态变量 trait也可以定义属性 2.简化的三元运算符...A.HTTP请求实例的操作 1.三种获取Request的方法 Request::all(); //Facade方式 app(‘request’); //直接服务容器获取

    11.9K20

    Laravel系列4.4】模型Eloquent ORM的使用(二)

    laravel/framework/src/Illuminate/Collections/Collection.php 是集合类,里面的方法大部分都调用的是 laravel/framework/src/...这是一个连续递进的关系,之前在 查询构造器 的文章,我们已经看到了它的底层就是调用的 原生查询 操作。那么这回,我们再来看一下 Model 方法,在底层是不是调用的是 查询构造器 。...在所有模型都要继承的 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 类,我们很快就能发现一个 query() 静态方法。...然后我们来看一下这个 Model 基类的其它方法,貌似没有发现 get() 、find() 之类的方法呀?这是怎么回事。别急,get() 、find() 都是在 查询构造器 方法嘛。...__call() 魔术方法,在这里,我们看到它调用了 forwardCallTo() 方法,然后传递进去的是一个新的 查询构造器 对象和方法名以及参数。

    2.8K20

    Django 基础快速入门

    :8000/ 即可: 此时由于没有配置当前路由,可在端口号后面直接访问 index 即可: 五、静态模板 在 Django 可使用对路由的处理方法跳转到对应的静态模板,此时我们在 server...app 的 views.py 文件下添加一个方法 us: def us(request): return render(request,"us.html") 此时这个方法返回的内容并不是一个...Django 项目,那么此时你输入对应的 us 后则会执行绑定的处理方法跳转到静态 us.html : 五、静态模板的文件引入 在 Django 的 html 文件若要引入静态文件,需要在起 app...由于我们使用的 form 表单的 method 为 post,那么在此时就需要对其登录提交做限制, post 的请求都将会被限制,所以此时的 login 方法编写如下: def login(request...删 删除操作也很简单,直接使用 model 指定对应的表通过指定 filter 后调用 delete 方法即可: def delete(request): # 删 models.UserInfo.objects.filter

    1.7K20

    Laravel 底层原理:门面(Facades)

    简介 Facades 为应用服务容器的绑定类提供了一个“静态”接口。 Laravel 内置了很多 Facades ,可以访问绝大部分 Laravel 的功能。...Laravel 的门面作为服务容器底层类的“静态代理”,相比于传统静态方法,在维护时能够提供更加易于测试、更加灵活、简明优雅的语法。...在下面的例子调用Laravel 的缓存系统。通过浏览这段代码,可以假定在 Cache 类调用静态方法 get: <?...php namespace App\Http\Controllers; use Illuminate\Support\Facades\Cache; use App\Http\Controllers\Controller...当用户调用 Cache Facade 的任何静态方法时, Laravel 会从 服务容器 解析 cache 绑定,然后在解析出的对象上调用所有的请求方法(本例是 get)。

    1.1K20

    Laravel 底层原理:门面(Facades)

    简介 Facades 为应用服务容器的绑定类提供了一个“静态”接口。 Laravel 内置了很多 Facades ,可以访问绝大部分 Laravel 的功能。...Laravel 的门面作为服务容器底层类的“静态代理”,相比于传统静态方法,在维护时能够提供更加易于测试、更加灵活、简明优雅的语法。...在下面的例子调用Laravel 的缓存系统。通过浏览这段代码,可以假定在 Cache 类调用静态方法 get: <?...php namespace App\Http\Controllers; use Illuminate\Support\Facades\Cache; use App\Http\Controllers\Controller...当用户调用 Cache Facade 的任何静态方法时, Laravel 会从 服务容器 解析 cache 绑定,然后在解析出的对象上调用所有的请求方法(本例是 get)。

    1.4K10

    Laravel源码分析之模型关联

    在开发我们经常遇到的关联大致有三种:一对一,一对多和多对多,其中一对一是一种特殊的一对多关联。我们通过官方文档里的例子来看一下Laravel是怎么定义这两种关联的。...的主键在中间表的外键role_id $this->foreignPivotKey = $foreignPivotKey;//父模型Role的主键在中间表的外键user_id...WHERE role_user.user_id = 1 远层一对多 Laravel还提供了远层一对多关联,提供了方便、简短的方式通过中间的关联来获得远层的关联。...,拿到关联实例后会去调用关联实例的 getResults方法返回关联的模型数据。...模型关联常用的一些功能的底层实现到这里梳理完了,Laravel把我们平常用的join, where in 和子查询都隐藏在了底层实现并且帮我们把相互关联的数据做好了匹配。

    9.6K10

    static 静态变量引起 Laravel 中队列一个 Bug

    环境 PHP_VERSION=7.4 laravel/framework: ^7.0 静态变量 很多编程语言对于静态变量的解释都是: 与程序有着相同生命周期的变量, 只初始化一次 不过由于PHP的常用运行环境是...php namespace App\Models; use Illuminate\Database\Eloquent\Model; class AttributeRequestLog extends...Laravel Laravel 实际上是拿到队列的驱动,然后转到worker去运行任务, 传递了一个参数once是否只运行一个任务,这里我们直接查看daemon方法 转到src\Illuminate\...Queue\Worker.php的daemon方法 Laravel 前面三行代码去监听退出信号,然后主动退出进程 下一行的$lastRestart是缓存获取一个时间戳,用于之后的主动退出进程...Laravel 这里我们直接看fire方法即可, 然后找到对应的队列驱动类,继承了父级的fire方法 Laravel 实际上是反射了这个job类然后调用它对应的方法 循环前的最后一个代码块就是

    19510

    Laravel系列6.5】门面模式

    Laravel 的门面是为应用的服务容器提供一个【静态】接口,相当于是服务容器底层类的一个【静态代表】,能够提供更加灵活、易于测试、优雅的语法。...$args); } __callStatic() 的意思是通过静态调用时如果没有定义对应的方法,就进入到 __callStatic() 方法,比如我们调用的 Cache::get() 这个方法,实际上当前的...接着,它就通过 getFacadeRoot() 获取我们当前门面的实例对象,然后调用实例对象的 get() 方法。...在 __callStatic() 方法,我们会看到调用了一个 static::getFacadeRoot() 方法来获得具体的实例对象。...总结 Laravel 的门面是不是非常有意思?其实它还有一个重要的功能就是解决了静态静态方法不好测试的问题,大家可以在官方文档契约相关的内容查看详细的内容。

    1.8K10

    laravel 自定义中间件实现身份验证

    通过Laravel 用户认证我们知道了基于 api 的身份验证,实现方式有Laravel Sanctum API 授权 、 Laravel 使用 Json Web Token(JWT) 等,今天介绍一下自定义中间件实现身份验证...中间件 使用中间件需要提前在app/Http/Kernel.php这里配置,分为全局中间件、中间件、中间件组 全局中间件 全局中间件无需主动调用,系统会自动应用到每次请求。...比如:TrimStrings中间件会自动去掉请求参数左右两边的空格;ConvertEmptyStringsToNull中间件会自动把请求参数的空字符串转为 null。...最终我选择启用该中间件 中间件、中间件组 一、上面提到的Laravel Sanctum API 授权使用的是auth中间件 protected $routeMiddleware = [...'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,

    1.8K10

    Laravel的基本使用

    [Laravel] Laravel的基本HTTP路由 使用Laravel的基本路由,实现get请求响应,找到文件app/Http/routes.php 调用Route的静态方法get(),实现get响应...,参数:string类型的路径,匿名函数function(){} 匿名函数内部,返回string数据 实现post,put,delete的请求,同上 实现get传递参数的路由,调用Route的静态方法get.../Http/Controllers目录下,新建一个Index/IndexController.php 定义命名空间,namespace App\Http\Controllers\Index 引入Controller...基本控制器,use App\Http\Controllers\Controller 定义IndexController继承Controller 实现方法index,返回数据 定义路由指定控制器的行为,例如...php namespace App\Http\Controllers\Index; use App\Http\Controllers\Controller; class IndexController

    1.3K30

    深入浅出 Laravel 的 Facade 外观系统

    关于「外观模式」可以阅读 设计模式 Java 版 - 外观模式 Laravel 外观组件 Laravel 的「外观」组件实际上是服务容器底层类的「静态代理」,它将 Laravel 内核定义的「Contracts...(在 Laravel 又 称为服务、契约或者通常我们所说的接口)」,以静态调用的方式封装到各个「外观」服务供我们使用。...我们拿 Illuminate\Support\Facades\App 外观服务开刀,去解开类似 App::make() 静态方法使用的奥秘。 深入 Facades\App: <?...$args); } } 你会发现这个 Facade 基类并没有定义类似 make 的方法,那么这里能够静态调用 App::make() 看来是需要从 __callStatic 着手才行。...首先,通过 getFacadeRoot 静态方法获取实际服务的实例对象; 然后,调用实例对象的相关方法并返回处理结果。 <?

    2.4K20
    领券