【问题标题】:Using model's class static method directly, without "USE" keyword直接使用模型类的静态方法,不带“USE”关键字
【发布时间】:2017-07-23 18:23:50
【问题描述】:

我有“UsersController”文件:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\User;

class UsersController extends Controller
{

    public function store(Request $request) {
        User::create( $request->all() );
        return "user added";
    }

}

“store”方法对应“POST”请求:

Route::post('users', ['uses' => 'UsersController@store']);

所以现在,如果我将 POST 数据发送到“用户”页面,它会将新用户添加到数据库中的“用户”表中。

好的,这可行,但我对 use App\User; 有疑问

如果删除这一行,然后尝试使用这样的“创建”方法:

public function store(Request $request) {
    App\User::create( $request->all() ); 
    ...

给出错误:Class 'App\Http\Controllers\App\User' not found

问题是:为什么不能像这样直接使用“User”类静态方法“create”:

App\User::create( $request->all() )

【问题讨论】:

  • \App\User::create($request->all());

标签: php laravel oop namespaces laravel-5.4


【解决方案1】:

更换你的

App\User::create( $request->all() );

通过

\App\User::create( $request->all() );

【讨论】:

  • 谢谢,工作,现在更明白了,所以这意味着use关键字总是寻找根文件夹?
  • 不是根文件夹的问题,use关键字可以说是使用绝对命名空间目录,比如App指的是/root/directory/subdirectory/,所以当你使用App这意味着您正在直接使用此文件夹中的类-可以这么说-
猜你喜欢
  • 1970-01-01
  • 2021-08-13
  • 2016-09-19
  • 2015-12-12
  • 2023-02-21
  • 2014-06-16
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
相关资源
最近更新 更多