首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修正php错误“不能通过引用传递参数1”?

如何修正php错误“不能通过引用传递参数1”?
EN

Stack Overflow用户
提问于 2019-11-12 06:44:26
回答 1查看 1.1K关注 0票数 1

我知道在堆栈溢出中有很多类似的错误,但是没有一个能解决我的问题。我在high_contrast.module文件中有一个函数:

代码语言:javascript
复制
function high_contrast_install() {
  $background = \Drupal::config('high_contrast.settings')->get('colors_background');
  $text = \Drupal::config('high_contrast.settings')->get('colors_text');
  $hyperlinks = \Drupal::config('high_contrast.settings')->get('colors_hyperlinks');

  \Drupal::service('file_system')->prepareDirectory(HIGH_CONTRAST_CSS_FOLDER, FileSystemInterface::CREATE_DIRECTORY); // LINE 17!!!
  $css = _high_contrast_build_css();
  file_save_data($css, HIGH_CONTRAST_CSS_LOCATION, FileSystemInterface::EXISTS_REPLACE);
}

当我想要安装这个模块时,我有错误:

代码语言:javascript
复制
Error: Cannot pass parameter 1 by reference in high_contrast_install() (line 17 of modules\high_contrast\high_contrast.install).

我怎样才能修好它呢?

第17行是:

代码语言:javascript
复制
  \Drupal::service('file_system')->prepareDirectory(HIGH_CONTRAST_CSS_FOLDER, FileSystemInterface::CREATE_DIRECTORY);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-12 21:33:54

正如错误提示的那样,FileSystem::prepareDirectory引用了它的第一个参数:

代码语言:javascript
复制
public function prepareDirectory(&$directory, $options = self::MODIFY_PERMISSIONS) {
  # $directory being assigned new value
}

因此,如果您传递一个常量,PHP会抛出一个错误:

常量是简单值的标识符(名称)。顾名思义,在脚本执行过程中,该值不能更改。

在函数调用之前,需要将常量值赋值给变量:

代码语言:javascript
复制
$dir = HIGH_CONTRAST_CSS_FOLDER;
\Drupal::service('file_system')->prepareDirectory($dir, FileSystemInterface::CREATE_DIRECTORY);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58813354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档