[已解决]composer不能引入本地的三方代码?

引入本地包时是需要在repositories依赖里填写完整的包路径(包composer.json的相对目录),而不是只填写包目录所在位置,

所以我把主项目的composer.json改成这样就好了:

    "repositories": {
        "upacpsdk": {
            "type": "path",
            "url": "local3rdpackages/upacp"  //<---这里不能只写local3rdpackages,而要写本地包完整路径
        },
        "packagist": {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        }
    }

最后执行下require就可以了:

composer require upacp/sdk:dev-master -vvv

=======下面是原问题描述=========

我要引入银联的sdk,于是写了下面这种目录结构:
图片描述

这里local3rdpackages目录是与主项目的composer.json在同一个目录级别下,我给三方库添加的composer.json文件代码如下(主要是为了inlcude acp_service.php文件)

{
  "name": "upacp/sdk",
  "autoload": {
    "files": [
      "acp_service.php"
    ],
    "extra": {
      "branch-alias": {
        "dev-master": "1.0-dev"
      }
    }
  }
}

主项目的composer.json文件里导入local3rdpackages目录下包的代码如下

    "repositories": {
        "0": {
            "type": "path",
            "url": "local3rdpackages/*/*",
            "options": {
                "symlink": false
            }
        },
        "packagist": {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        }
    }

但是还是没有效果啊,我应该怎么做?

阅读 4.2k
3 个回答

原来是新版本composer的path类型. 刚看完文档.

执行composer dump-autoload
然后查看/vendor/composer/autoload_files.php中生成的文件映射是否正确
    "autoload": {
        "psr-4": {
            "App\\Controller\\": "app/controller",
            "App\\Model\\": "app/model"
        }, //自动加载规范。key为项目中引用类时的namespace,value为自定义类namespace。要注意key中需要两个\\
        "files":["app/controller/index.php"], //引入单个文件
        "classmap":["app/controller"] //引入文件夹下所有文件
    }

以上三中方式都可以映入自定义类或者函数。
然后在执行 composer update

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题