Skip to content

Commit 96f691e

Browse files
authored
Merge pull request #58 from breakliu/bugfix/compatibility-is_countable
compatibility: is_countable (PHP 7 >= 7.3.0, PHP 8)
2 parents 0925001 + 8c82f29 commit 96f691e

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

src/Sav/Record/Info/LongStringMissingValues.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use SPSS\Buffer;
66
use SPSS\Sav\Record\Info;
7+
use SPSS\Utils;
78

89
class LongStringMissingValues extends Info
910
{
@@ -32,7 +33,7 @@ public function write(Buffer $buffer)
3233
foreach ($this->data as $varName => $values) {
3334
$localBuffer->writeInt(mb_strlen($varName));
3435
$localBuffer->writeString($varName);
35-
$localBuffer->write(\chr(\is_countable($values) ? \count($values) : 0), 1);
36+
$localBuffer->write(\chr(Utils::is_countable($values) ? \count($values) : 0), 1);
3637
$localBuffer->writeInt(8);
3738
foreach ($values as $value) {
3839
$localBuffer->writeString($value, 8);

src/Sav/Record/Info/LongStringValueLabels.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use SPSS\Buffer;
66
use SPSS\Sav\Record\Info;
7+
use SPSS\Utils;
78

89
class LongStringValueLabels extends Info
910
{
@@ -47,7 +48,7 @@ public function write(Buffer $buffer)
4748
$localBuffer->writeInt(mb_strlen($varName));
4849
$localBuffer->writeString($varName);
4950
$localBuffer->writeInt($width);
50-
$localBuffer->writeInt(\is_countable($data['values']) ? \count($data['values']) : 0);
51+
$localBuffer->writeInt(Utils::is_countable($data['values']) ? \count($data['values']) : 0);
5152
foreach ($data['values'] as $value => $label) {
5253
$localBuffer->writeInt($width);
5354
$localBuffer->writeString($value, $width);

src/Utils.php

+13
Original file line numberDiff line numberDiff line change
@@ -257,4 +257,17 @@ public static function segmentAllocBytes($width, $segment)
257257

258258
return 0 === $width ? 8 : self::roundUp(self::segmentAllocWidth($width, $segment), 8);
259259
}
260+
261+
/**
262+
* @param mixed $values
263+
*/
264+
public static function is_countable($values)
265+
{
266+
# is_countable (PHP 7 >= 7.3.0, PHP 8)
267+
if (version_compare(PHP_VERSION, "7.3") < 0) {
268+
return (is_array($values) || is_object($values) || is_iterable($values) || $values instanceof Countable);
269+
} else {
270+
return \is_countable($values);
271+
}
272+
}
260273
}

0 commit comments

Comments
 (0)