在 CakePHP 3.0 项目中的何处放置自定义数据库驱动程序 class?

Where to place custom database driver class within CakePHP 3.0 project?

我正在处理一个 CakePHP 3.0 项目,该项目需要与非常旧版本的 SQL 服务器通信,我发现有必要扩展 Sqlserver 数据库驱动程序 class,以及 SqlserverDialectTrait 特性,以便覆盖其中的几个函数。

那部分,我已经做得很好了。我被卡住的地方是:我实际上在哪里放置新的 class 文件在我的项目中,以便我可以在我的数据库配置的 "driver" 参数中使用它们?

(我能找到的关于做这类事情的所有文档似乎都指的是 CakePHP 2.0,而不是 3.0,但如果有人能指出我忽略的任何内容,我将不胜感激.)

理论上,当您通过完全限定名称引用它时,您可以将它们放置在 composer 可以加载它们的任何位置,您可以在数据源配置的 driver 选项中设置它。

为了保持 Cake-ish 的风格,并且即使不指定完全限定名称也可以加载驱动程序,而只是一个类名(这在其他各种地方类似,如组件、助手、表等),你应该遵循 CakePHP 核心 naming/folder 模式,即驱动程序进入 src/Database/Driver 与匹配的命名空间,即 App\Database\Driver 和方言特征(虽然不受 CakePHP 仅类名可加载性的影响thingy) 会进入 src/Database/Dialect.

那么它不仅可以使用像

这样的完全限定名称
'driver' => '\App\Database\Driver\MyCustomDriver'

但也只有类名,比如

'driver' => 'MyCustomDriver'

另见