- A+
所属分类:PHP
使用thinkPHP5的时候出现如下错误
类型错误: Argument 1 passed to think\Hook::import() must be of the type array, integer given, called in /data/php/college/thinkphp/library/think/App.php on line 509
问题原因分析
在我使用thinkphp5的自动创建完项目的结构后出现了这个错误。那么问题应该就出在自动构建的文件中。其实通过以上的错误可以看出。出问题的地方就是Hook中执行import进行钩子的挂载时出问题了。这个问题的原因分析之前我们先来看看自动构建文件build.php的结构。
'frontend' => [ '__file__' => ['common.php', 'config.php', 'tags.php'], '__dir__' => ['behavior', 'controller', 'model', 'view'] ]
这个写法自然是没有问题的。但是在自动生成的问题件中有个一tags.php打开tags.php可以发现是一个空的PHP文件。
问题就出在这儿
tags.php会在程序初始化时载入,载入后会去分析tags.php中的配置而且是不加判断直接传入到Hook的import中的。这样就会导致这样的一个错误。所以如果tags.php是留着项目后期使用的那么就需要这样来写返回一个空数组:
<?php return [ ];