【发布时间】: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