假设有以下代码片段:
在VS Code上,intelephense一直在抱怨我在函数中使用
intelephense不喜欢我的代码哪里?请注意,页面运行正常...那么什么是string []类型?
编辑:这很可能是intelephense的一个bug...
我是这样计算
实际上,我在GitHub上提交了一个错误报告,并等待Mewburn的回复... :)
<?php
declare (strict_types = 1);
define('SOURCE_PATH', 'C:\xampp\htdocs\atlantis\ProductImages\\');
$dest = explode('\\', SOURCE_PATH);
$dest[count($dest) - 2] = 'ToUpload';
$dest = implode('\\', $dest);
function transfer(string $file)
{
global $dest;
if (!@chdir($dest)) {
mkdir($dest);
chdir($dest);
}
// ...
}
function compress(string $path)
{
global $dest;
$zip = new ZipArchive();
$zip->open(dirname($dest, 1) . '\\' . explode('\\', SOURCE_PATH)[count(explode('\\', SOURCE_PATH)) - 2] . '.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);
// ...
}
在VS Code上,intelephense一直在抱怨我在函数中使用
$dest
的所有四个实例中出现了Expected type 'string'. Found 'string[]'
的问题...intelephense不喜欢我的代码哪里?请注意,页面运行正常...那么什么是string []类型?
implode()
返回一个字符串,那这里有什么问题?编辑:这很可能是intelephense的一个bug...
我是这样计算
$dest
的:
$dest = dirname(SOURCE_PATH, 1) . '\ToUpload\\';
这没有涉及到explode()
,而且错误已经消失了...所以某种程度上,intelephense无法考虑到implode()
返回的是一个字符串而不是一个数组...实际上,我在GitHub上提交了一个错误报告,并等待Mewburn的回复... :)