Ошибка RedBean при composer автозагрузке, созданной вручную - PullRequest
0 голосов
/ 24 февраля 2020

я изучаю кое-что о RedBean PHP ORM и добавляю код, загруженный из http://www.redbeanphp.com/downloadredbean.php, в автозагрузку моего проекта с помощью команды composer dump-autoload и конфигурации composer. json 'в каталоге root:

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

в' vendor / composer / Установлено. 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 о «Моделях» и коде:

<?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"), но я хочу больше узнать об автозагрузке и получить хорошее представление о том, что не так в моей конфигурации / коде.

1 Ответ

0 голосов
/ 26 февраля 2020

Проблема была в коде http://www.redbeanphp.com/downloadredbean.php, он не подготовлен для использования с composer автозагрузкой, это своего рода объединение, весь код в одном файле, и я пытаюсь скачать релиз с : https://github.com/gabordemooij/redbean/archive/v5.4.2.zip, я делаю тот же процесс для генерации автозагрузки, но мы должны отредактировать загрузчик файлов на RedBean PHP dir в выпуске и изменить REDBEANPHP_MAIN_DIR с phar://rb.phar/RedBeanPHP/ на vendor/redbean-5.4.2/RedBeanPHP/ , я поставил код на vendor / redbean-5.4.2, и все проблемы решены :)

...