【问题标题】:laravel - Cannot declare class Carbon\Carbon, because the name is already in uselaravel - 无法声明类 Carbon\Carbon,因为该名称已在使用中
【发布时间】:2021-07-07 10:14:13
【问题描述】:

我在代码中使用了 carbon 类,但我得到了这个错误

无法声明类 Carbon\Carbon,因为该名称已在使用中

这是我的代码

AttendanceController.php

use DateTime;
use App\User;
use App\Latetime;
use App\Attendance;
use Illuminate\Support\Facades\Hash;
use App\Http\Requests\AttendanceEmp;
use App\Carbon\Carbon;

class AttendanceController extends Controller
{
 public function assign(AttendanceEmp $request)
{
    $request->validated();

    if ($employee = User::whereEmail(request('email'))->first()){
        
        $mytime = Carbon::now()->format('H:i:m');
        if (Hash::check($request->pin_code, $employee->pin_code)) {
                if (!Attendance::whereAttendance_date(date("Y-m-d"))->whereUser_id($employee->id)->first()){
                    $attendance = new Attendance;
                    $attendance->user_id = $employee->id;
                    $attendance->attendance_time = $mytime;
                    $attendance->attendance_date = date("Y-m-d");

                    if (!($employee->schedules->first()->time_in >= $attendance->attendance_time)){
                        $attendance->status = 0;
                    AttendanceController::lateTime($employee);
                    };
                    $attendance->save();

                }else{
                    return redirect()->route('attendance.login')->with('error', 'you assigned your attendance before');
                }
            } else {
            return redirect()->route('attendance.login')->with('error', 'Failed to assign the attendance');
        }
    }

Carbon.php

namespace Carbon;

//use Carbon\Traits\Date;
use DateTime;
use DateTimeInterface;
use DateTimeZone;
class Carbon extends DateTime implements CarbonInterface

{ 使用日期;

/**
 * Returns true if the current class/instance is mutable.
 *
 * @return bool
 */
public static function isMutable()
{
    return true;
}
}

这是错误的屏幕截图 error screenshot

【问题讨论】:

  • 您是否创建了自定义类 carbon in use App\Carbon\Carbon;?如果不是,那么命名空间应该使用 Carbon\Carbon;
  • 首先你为什么要创建一个实现CarbonInterfaceCarbon 类?很可能有更好的方法来实现您想要的:使用宏/mixins 是具有不同名称的不同类,而不是实现CarbonInterface
  • 错误信息说你已经在之前的某个地方声明了一个名为Carbon的类。你向我们展示了第 500 行,之前发生了什么?有没有class Carbon 的地方?你可能使用use some\other\namespace\Carbon 吗?那也行不通。

标签: php mysql laravel php-carbon


【解决方案1】:

听起来您将 Carbon.phpnesbot/carbon 复制粘贴到 app/Carbon/Carbon.php 并加载此文件。

没有相关的理由这样做。

那么你在 Laravel 中 app/ 文件夹中的文件都应该有一个以 namespace App\ 开头的命名空间

【讨论】:

    【解决方案2】:

    如果你使用 Laravel,没有理由手动创建 Carbon 类,它是开箱即用的。您只需要在您的模型中声明它:

    use Carbon\Carbon;
    

    之后你就可以使用所有必要的功能了,例如:

    Carbon::now()->subDays(30)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-17
      • 2020-06-21
      • 2021-06-13
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      相关资源
      最近更新 更多