【问题标题】:Laravel: 'use' statement sometimes necessary, sometimes notLaravel:'use'语句有时是必要的,有时不是
【发布时间】:2020-07-23 10:56:53
【问题描述】:

如果我需要一个use 语句来访问一个类,这对我来说是非常随机的。在以下运行没有问题的代码中,Faker 库不需要 use Faker 或类似的东西,但 Seeder 确实需要 use

我假设 Faker 是使用 Composer 自动加载器访问的,但在 composer.json 中我没有看到 vendor 目录用于 psr-4 自动加载或类映射自动加载,所以它是如何发现的超越我。

<?php

use Illuminate\Database\Seeder;


class MoreProductsSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        for ($i = 0; $i<1000; $i++)
        {
            $faker = Faker\Factory::create();
            \App\Product::create([
                'name' => $faker->name,
                'photo' => 'https://picsum.photos/200/300',
                'price' => rand(1,20000),
                'category_id' => rand(1,3)
            ]);
        }
      
    }
}

【问题讨论】:

  • 不是真的,我知道 use 背后的概念,但不明白在我的具体示例中究竟是如何发挥作用的。
  • 某些类可用作加载的服务提供者的别名。一些示例是DBLog 等。您可以在config/app.php 文件中找到完整列表。

标签: php


【解决方案1】:

如果您多次使用一个类,例如
Faker\Factory::create(...)



然后,在您使用的同一文件中
Faker\Factory::create(...)再次

在这里,您重复完整路径Faker\Factory,而不是您应该在上课前只使用use Faker\Factory as Faker;,然后只需使用Faker::create(...) 多次,而无需重复完整路径。

如果您愿意,您甚至可以使用 class MoreProductsSeeder extends Illuminate\Database\Seeder 这个来代替。

【讨论】:

  • 您说得对,我的代码可以优化,但您的回答并不能真正回答我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 2011-09-14
相关资源
最近更新 更多