【问题标题】:What is autoload in composer.json and how can we use this in laravel?composer.json 中的自动加载是什么,我们如何在 laravel 中使用它?
【发布时间】:2018-01-09 01:51:58
【问题描述】:

我刚开始使用 Laravel,想创建一个自定义类并想在每个控制器中调用这个类。为此,我在app/Library/ 文件夹中创建了一个Customer 类。

当我尝试通过 composer, json 自动加载这个库时,它给出了一个错误:

无法扫描“App/Library/Customer”中看起来既不是文件也不是文件夹的类。

我们如何在控制器中使用自动加载类?

Customer.php

<?php
    namespace App\Library;
    use App\Model\User;
    class Customer
    {
        public function login($user_name,$password){
            $data = User::where('email', $user_name)
              ->where('password', $password)
              ->first();
            return $data->id';
        }
    }

Composer.json 的自动加载部分

{
    "autoload": {
        "classmap": [
            "database",
            "app/Library/Customer"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files" : [
            "app/Helper/helper.php"
        ]
    }
}

【问题讨论】:

    标签: php laravel autoload composer-php


    【解决方案1】:

    我认为您不了解作曲家自动加载的用途。您可以使用它来包含库及其依赖项,而不是真正用于您在应用中创建的类。

    您最好在创建控制器时添加您要使用的类,例如:

    <?php
    use App\Library\Customer;
    

    您需要将其放入每个控制器中。

    【讨论】:

      【解决方案2】:

      您应该将其从类映射组中删除,然后添加正确的命名空间和类。您可以在此处查看所有 psr-4 标准:http://www.php-fig.org/psr/psr-4/

      假设您有这样的文件夹结构:

      app
          -> Library
              -> Customer.php // namespace App\Library; class Customer{}
          -> Model
              -> User.php // namespace App\Model; class User{}
      

      只要您使用正确的命名空间和类名,所有文件都应该自动加载。

      顺便说一下,你应该使用 Auth 外观:https://laravel.com/docs/5.4/authentication

      【讨论】:

        【解决方案3】:

        无需classmap,因为psr-4 自动加载已经到位。你必须了解它是如何工作的。然后你可以简单地使用use关键字导入你的类,像这样

        <?php 
        
        use App\Library\Customer;
        

        欲了解更多信息,请阅读PSR-4: Autoloader 并获取此Tutorial

        【讨论】:

          猜你喜欢
          • 2016-04-06
          • 1970-01-01
          • 2015-10-26
          • 1970-01-01
          • 2011-10-08
          • 1970-01-01
          • 1970-01-01
          • 2017-11-18
          相关资源
          最近更新 更多