【问题标题】:RedBean failed on composer autoload manually generatedRedBean 在 composer autoload 手动生成时失败
【发布时间】:2020-06-07 13:43:54
【问题描述】:

我正在学习一些关于 RedBeanPHP ORM 的知识并添加 从http://www.redbeanphp.com/downloadredbean.php下载的代码 使用“composer dump-autoload”命令到我的项目自动加载和 根目录下的配置'composer.json'为:

{
  "autoload": {
    "classmap": [
      "vendor/redbeanphp/src/rb.php",
      "vendor/myowncode/src/Model.php"
    ]
  }
}

在“供应商/作曲家/installed.json”上我放了这个:

[
    {
    "name": "gabordemooij/redbean",
    "version": "5.4",
    "require": {},
        "autoload": {
            "psr-4": {"RedBeanPHP\\": "src"}
        }
    },
    "name": "myowncode/src",
    "version": "1.0",
    "require": {},
        "autoload": {
            "psr-4": {"MyCode\\": "src"}
        }
    }
]

并且一切正常,至少在我尝试 RedBean web 中的示例之前 关于“模型”和代码:

<?php
require 'vendor/autoload.php';

class Model_Band extends RedBean_SimpleModel {
            public function update() {
                if ( count( $this->bean->ownMember ) >4 )
                throw new Exception( 'Too many members!' );
            }
    }

导致错误:

PHP Fatal error:  Cannot declare class RedBeanPHP\RedException, because the name is already in use in /opt/lampp/htdocs/testing/vendor/redbeanphp/src/rb.php on line 8358

Fatal error: Cannot declare class RedBeanPHP\RedException, because the name is already in use in /opt/lampp/htdocs/testing/vendor/redbeanphp/src/rb.php on line 8358

但是,如果我不使用自动加载并这样做:

require 'vendor/redbean/src/rb.php';

class Model_Band extends RedBean_SimpleModel {
            public function update() {
                if ( count( $this->bean->ownMember ) >4 )
                throw new Exception( 'Too many members!' );
            }
    }

它有效,但我希望它适用于自动加载,我知道,我可以打开 composer.json 文件并添加包名(“gabordemooij/redbean”:“dev-master”),但我想学习更多关于自动加载和 很好地理解我的配置/代码有什么问题。

【问题讨论】:

    标签: php orm composer-php autoload


    【解决方案1】:

    问题是来自http://www.redbeanphp.com/downloadredbean.php 的代码不是 准备与作曲家自动加载一起使用,是某种合并,所有代码 在一个文件中,我尝试从以下位置下载版本: https://github.com/gabordemooij/redbean/archive/v5.4.2.zip,我做同样的过程 要生成自动加载,但我们必须在 RedBeanPHP 目录上编辑文件加载器 释放并更改 REDBEANPHP_MAIN_DIRphar://rb.phar/RedBeanPHP/vendor/redbean-5.4.2/RedBeanPHP/,我把代码放在vendor/redbean-5.4.2上, 这就是所有问题都解决了:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-15
      • 2018-09-09
      • 2016-01-23
      • 2014-03-26
      • 2018-06-06
      • 2019-07-22
      • 1970-01-01
      • 2012-03-15
      相关资源
      最近更新 更多