使用两个include_once()从web下载Drupal之外的脚本,它运行得非常好。但是这里阅读的问题和答案告诉我,在Drupal 8控制器中,这不再是一个选项。很好。
composer require tinybutstrong/tinybutstrong
composer require tinybutstrong/opentbs这两个命令将代码放在我的供应商dir中,最终自动加载程序(替代include_once)完成了它的工作:克隆我控制器中的所有代码,我收到一个致命的错误:“不能声明类TinyButStrong\clsTbsLocator,因为这个名称已经在include_once中使用了。
我想现在我在控制器中遗漏了一个use语句。尝试过(很多次!)没有运气的选项,例如:
namespace TinyButStrong; # at the beginnig of vendor/.../tbs_class.php and
use TinyButStrong\clsTinyButStrong; # before my method in my controller...另外,我读过“每个文件一个类”。但是tbs_class.php包含几个定义类和3个类。我会被迫在几个文件中剪切它(忘记用composer安装)吗?
提前谢谢。祝您今天愉快。
发布于 2018-09-12 13:45:51
包含带有composer的库不会改变它的工作方式及其类/命名空间结构。
它不会自动获得名称空间,包名和命名空间之间没有关联。
从https://github.com/Skrol29/tinybutstrong的角度来看,它似乎不使用名称空间,而是将所有内容都包含在一个文件中。
因此,这正是您仍然必须使用的方式,只需引用带有new \clsTinyButStrong()的全局命名空间。
如果这样做不起作用,那么您需要报告有一个bug,它负责告诉编写器在哪里加载它的文件。
https://drupal.stackexchange.com/questions/269196
复制相似问题