【问题标题】:how to use composer autoloader with __autoload?如何将作曲家自动加载器与 __autoload 一起使用?
【发布时间】:2017-02-02 09:44:04
【问题描述】:

我的 composer.json 内容是:

{
    "require": {
        "rlanvin/php-rrule": "1.*"
    }
}

我自己的自动装载机是:

function __autoload($class_name) {
    include __DIR__.'/classes/'.$class_name . '.php';
}

问题是:当我想用

添加作曲家自动加载器时
require_once 'vendor/autoload.php';

我自己的自动加载器不再工作了。 (找不到类!)

如何不工作(作曲家 autolader 和我的)?

问候

我试过了:

<?php
require 'vendor/autoload.php';
User::get(1);

User.php 在 /classes 中

composer.json

{
    "require": {
        "rlanvin/php-rrule": "1.*"
    },
    "autoload": {
        "psr-0": { 
            "": "classes" 
        }
    }
}

并且“找不到类用户”

它适用于我的自动加载器:

函数 autoload($class_name) { 包括 __DIR.'/classes/'.$class_name 。 '.php'; }

【问题讨论】:

标签: php composer-php


【解决方案1】:

您不需要自动加载器。 Composer 有很多options:PSR-0、PSR-4、classmap 和文件。试试classmap

{
    "require": {
        "rlanvin/php-rrule": "1.*"
    },
    "autoload": {
        "classmap": [
            "classes"
        ]
    }
}


更新: 或者更好地使用psr-0 以下列方式
{
    "require": {
        "rlanvin/php-rrule": "1.*"
    },
    "autoload": {
        "psr-0": { 
            "": "classes" 
        }
    }
}

【讨论】:

  • 没有帮助:找不到类。我正在使用:require_once 'vendor/autoload.php';
  • 不:我应该运行它吗?我只是做了并且没有帮助
  • 仍然:找不到类用户:事实上它看起来 composer.json 是......完全被忽略了!当我删除 composer.json 或重命名或更改其内容时:它根本没有效果
  • 尝试运行composer dump更新autoload.php
  • 作曲家转储做到了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-08-26
  • 2014-01-31
  • 2015-09-24
  • 2016-03-05
  • 2016-10-20
  • 2013-12-09
  • 2016-08-01
相关资源
最近更新 更多